1.注释
单行注释 #
多行注释 :<<EOF
注释内容
注释内容
注释内容
EOF
2.字符串
echo ${#String} 统计字符串长度并显示
echo ${String:n:m} 从n位(第一位为0位)开始截取长度为m的字符串并显示
echo `expr index "$String" 查找字符串中字符s的位置(从1开始)并显示
3.数组
array=("Jason" "Jensen" "Tim") 定义数组
echo ${array[i]} 输出数组i位
echo ${array[@]}或echo ${array[*]} 依次输出数组所有元素
echo ${#array[@]}或echo ${#array[*]} 统计数组长度并显示
4.运算符(算术,关系,布尔,字符串,文件测试)
1). 算术运算符
+, -, \*, /, %(乘法需使用转义字符)
c=`expr $a \* $b` 乘法运算
2). 字符串运算符
: 字符串内容相同则为真,注意在=前后各有一个空格,如果没有空格就是赋值的关系
!=: 字符串内容不同,则为真
-z: 字符串内容为空(长度为零)则为真
-n: 字符串内容非空(长度非零)则为真
<: string1 < string2 如果string1在本地的字典序列中排在string2之前,则为真
>: string2 如果string1在本地的字典序列中排在string2之后,则为真
3). 整数值比较
eq: 等于(equal)
-ne: 不等于(not equal)
-gt: 大于(Greater than)
-lt: 小于(lesser than)
-le: 小于等于(lesser or equal)
-ge: 大于等于(Greater or equal)
4). 布尔运算符(与或非)
a : 与运算,-a与[]一起用
-o : 或运算,-o与[]一起用
! : 非运算,当制定条件不成立时,返回结果为真
5). 逻辑运算符
&&: 逻辑与 &&与[[]]一起用
||: 逻辑或 ||与[[]]一起用
6). 文件测试运算符
b file 检测文件是否是块设备文件,如果是,则返回 true。
-c file 检测文件是否是字符设备文件,如果是,则返回 true。
-d file 检测文件是否是目录,如果是,则返回 true。
-f file 检测文件是否是普通文件(既不是目录,也不是设备文件),如果是,则返回 true。
-r file 检测文件是否可读,如果是,则返回 true。
-w file 检测文件是否可写,如果是,则返回 true。
-x file 检测文件是否可执行,如果是,则返回 true。
-s file 检测文件是否为空(文件大小是否大于0),不为空返回 true。
-e file 检测文件(包括目录)是否存在,如果是,则返回 true。
-nt:file1 -nt file2 如果 file1 比 file2 新(修改时间),则为true
-ot:file1 -ot file2 如果 file1 比 file2 旧(修改时间),则为true
5.流程控制语句
1). if-else结构
if [ 条件测试语句1 ] ;
then 命令1
elif [ 条件测试语句1 ] ;
then 命令1
elif ...
else
命令n
fi
2). for循环
for var in 1 2 3 4
do
echo $var
done
for j in $(seq 1 5) #seq产生循环次数
for循环总是接收in语句之后的某种类型的字列表。
字列表也可以引用磁盘上的文件,甚至文件通配符。
#对目录中的文件做循环
for x in /var/log/*
do
echo "$x is a file living in /var/log"
echo $(basename $x) is a file living in /var/log #basename用于获取基本文件名,否则$x获取绝对路径
done
3). while循环
while 命令表达式
do
命令列表
done