Shell中的算术比较、字符串比较与文件测试等

  •   
  • 4436
  • Linux
  • 4
  • super_dodo
  • 2013/12/21

程序中的流程控制是由比较和测试语句来处理的。

逻辑运算符

[ condition ] && action;        //如果condition为真,则执行action
[ condition ] || action;        //如果condition为假,则执行action

算术比较

[ $var -eq 0 ]          //当$var等于0时,返回真
[ $var -ne 0 ]          //当$var不等于0时,返回真
[ $var1 -ne 0 -a $var2 -gt 2 ]  //使用逻辑与 -a
[ $var1 -ne 0 -o $var2 -gt 2 ]  //使用逻辑或 -o
//-gt   大于
//-lt   小于
//-ge   大于或等于
//-le   小于或等于

文件系统相关测试

[ -f $file_var ]        //如果给定的变量包含正常的文件路径或文件名,则返回真
[ -x $file_var ]        //如果给定的变量包含的文件可执行,则返回真
[ -d $file_var ]        //如果给定的变量包含的是目录,则返回真
[ -e $file_var ]        //如果给定的变量包含的文件存在,则返回真
[ -c $file_var ]        //如果给定的变量包含的是一个字符设备文件的路径,则返回真
[ -b $file_var ]        //如果给定的变量包含的是一个块设备文件路径,则返回真
[ -w $file_var ]        //如果给定的变量包含的文件可写,则返回真
[ -r $file_var ]        //如果给定的变量包含的文件可读。则返回真
[ -L $file_var ]        //如果给定的变量包含的是一个符号链接,则返回真

字符串比较

//使用字符串比较时,最好使用双中括号,因为有时候采用单中括号会产生错误,所以最好错开他们
[[ $str1 = $str2 ]] //当str1等于str2时,返回真。也就是说,str1和str2包含的文本是一模一样的。
[[ $str1 == $str2 ]] //这个检查字符串是否相等的另外一种写法
[[ $srt1 != $str2 ]] //如果两个字符串不相同,则返回真
[[ $str1 > $str2 ]] //如果str1的字母序比str2大,则返回真
[[ $str1 < $str2 ]] //如果str1的字母序比str2小,则返回真 [[ -z $str1 ]] //如果str1包含的是空字符串,则返回真 [[ -n $str1 ]] //如果str1包含的是非空字符串,则返回真 //注意:在=前后各有一个空格。如果不加空格则变成了赋值语句,而非比较语句 //使用逻辑运算符 && 和 || 能够很容易的将多个条件组合起来 [/php]

没有失败就无所谓成功,没有遭遇过挫折和失败的人生是不丰富的人生,就像白开水,纯净却没有味道。 ——俞敏洪