bash脚本中条件测试类型:整数测试
字符串测试
文件测试
条件测试的表达式:[ expression ]
[ [ expression ] ]表达式的前后必须有空格
整数测试:-eq:测试两整数是否相等,相等为真
-ne:测试两整数是否不等,不等为真
-ge:测试一个数是否大于或等于另一个数
-le:..............小于或等于.......
-gt: ..............大于..........
-lt: ...............小于..........
bash中命令间(语句间)的逻辑关系:
逻辑与:&&,前一命令执行结果为假,第二条语句就不再执行
逻辑或:||,前一条命令执行结果为真,第二条语句就不再执行
逻辑非:!
可以在条件测试后使用逻辑符号来确定第二条指令是否执行
使用条件判断的控制结构来确定命令间的逻辑关系
eg:[ expression ] && statement1 || statement2
表示,如果测试表达式为真,就执行语句1,否则就执行语句2
if控制结构:
if 判断条件 ; then
statement
fi
if 判断条件 ;then
statement1
else
statement2
fi
注意:判断条件的返回值类型一定要是布尔型的
文件测试:-e /path/to/filename测试文件是否存在
-f 测试指定文件是不是普通文件
-d 测试指定文件是不是目录文件
-r 测试该文件是否有读权限
-w测试该文件是否有写权限
-x 测试该文件是否有执行权限
字符串测试:=
==
等号和双等号都可以,[ string1 = string2 ]测试两个字符串是否相等
-n string 测试指定字符串是否为空,空为真
-z string 测试指定字符串是否不空,不空为真
整数运算:A=3,B=4
let C=$A+$B
C=$[$A+$B]
C=$(($A+$B))
C=` expr $A + $B `
脚本选项:使用shell的特殊变量可以实现
$#:表示参数的个数
$0:脚本名称
$1:第一个参数的名称,以此类推,但是shell在识别参数的时候是以空格为参数之间的分隔符的
$*:脚本参数
$@:脚本参数
$*和$@只有在被双引号括起来的时候才可以看出差异:$*把参数当成一个单词,而$@把参数是分开看待的
组合条件测试:
1. 在测试表达式之后使用&&,|,!表示逻辑关系
[ expression1 ] && [ expression2 ]
2.在测试条件之间使用-a,-o,!表示条件之间逻辑关系
[ expression1 -a expression2 ]
条件判断之case选择结构:
case SWITCH in
value1)
statement1
;;
value2)
statement2
;;
*)
statement3
;;
esca
case选择结构就是判断一个参数的值,也可以是表达式,当该参数值符合某个value时,就执行对应的操作