流程控制与比较
shell中值的比较
条件通常放在封闭的中括号内。注意在括号[ ]与操作数之间必须有一个空格。如果没有空格,就会报错。
正确的使用方式:
# if [ $var -gt 0 ]; then echo "pass"; fi //注意 if与[之间的空格 $var之前的空格 0之后的空格 都是必须有的
pass
if语句的语法
if condition:
then
commands;
elif condition;
then
commands;
else
commands;
fi
运算符
-gt 大于
-lt 小于
-ge 大于或等于
-le 小于或等于
逻辑与 -a
逻辑或 -o
文件系统相关的比较
[ -f $file_var ] : 如果给定的变量包含正常的文件路径或文件名 返回真
[ -x $var ] :如果给定的变量包含的文件可执行,返回真
[ -d $var ] :如果给定的变量包含的是目录,返回真
[ -e $var ] :如果给定的变量包含的文件存在,返回真
[ -c $var ] : 如果给定的变量包含的是一个字符设备文件的路径,返回真
[ -b $var ]: 如果给定的变量包含的是一个块设备文件的路径,则返回真
[ -w $var ]: 如果给定的变量包含的文件可写,返回真
[ -r $var ]: 如果给定的变量包含的文件可读,返回真
[ -L $var ]: 给定的变量包含的是一个符号链接,返回真
字符串比较
[[ $str1 = $ str2 ]] ,当两个值相等时,返回true ,注意在=前后各有一个空格,如果忘记加空格,就不是比较关系,变成了赋值了
[[ $str1 == $str2 ]], 检查字符串相等的另一种写法
[[ $str1 > $str2 ]]
[[ $str1 < $str2 ]]
[[ -z $str1 ]] , 如果str1是空字符串,返回真
[[ -n $str1 ]] ,如果str1是非空字符串,返回真
test命令
可以用test命令来代替括号,进行条件检测。
# if test $var -gt 0; then echo "pass"; fi
pass