流程控制与比较

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

posted on 2015-06-05 18:16  karenwang  阅读(185)  评论(0编辑  收藏  举报

导航