一般情况我们使用if、if else 以及逻辑运算符来执行测试,而用一些比较运算符来比较数据项。另外,也可以用test来测试!

if条件:

if condition

then

commands

fi

else if和else:

if condition

then

commands

elif condition

then

commands

else

commands

fi

算术比较:

条件通常被放置子在封闭的中括号中,注意在[和]与操作数之间有一个空格,如果忘记了空格,脚本就会报错。

例如:

[ $var -eq 0 ] or [ $var -eq 0 ]

对变量或者值进行算术条件判断:

[ $var -eq 0 ] #当 $var 等于0 时 返回true

[ $var -ne 0 ] #当 $var 为非0 时 返回true

其他重要的操作符如下:

-gt:大于

-lt:小于

-ge:大于或等于

-le:小于或等于

多个条件的测试:

[ $var -eq 0 -a $var1 -eq 0 ] #使用逻辑与-a

[ $var -eq 0 -o $var1 -ne 0 ]#使用逻辑或-o

文件系统相关的测试:

[ -f $file_var ]:如果给定的变量包含正常的文件路径或者文件名,则返回真

[ -x $var ]:若果给地的变量包含的文件可执行,则返回为真

[ -d $var ]:如果给定的变量包含的是目录,则返回为真

[ -e $var ]:如果给定的变量包含的文件存在,则返回为真

[ -c $var ]:如果给定的变量包含的是一个字符设备文件的路径,则返回为真

[ -b $var ]:如果给定的变量包含的是一个块设备文件的路径,则返回为真

[ -w $var ]:如果给定的变量包含的文件可写,则返回为真

[ -x $var ]:如果给定的变量包含的文件可读,则返回为真

[ -L $var ]:如果给定的变量包含的文件是一个符号链接,则返回为真

示例如下:

fpath="/etc/pwdcf"

if [ -e $fpath ];then

echo "file directory is exist!";

else

echo "file directory is not exist!";

fi

字符串比较:

使用字符串比较时,最好用双括号,因为有时候采用单个中括号会产出错误,所以最好避开它们。

注意:=前后各有一个空格,如果忘了加了,就变成赋值了。

[ [ $str1 = $str2 ] ]或者[ [ $str1 == $str2 ] ]:当str1等于str2时,返回为真

[ [ $str1 != $str2 ] ]:当str1与str2不同时,返回为真

[ [ $str1 > $str2 ] ]:当str1的字母序与str2大时,返回为真

[ [ $str1 < $str2 ] ]:当str1的字母序与str2小时,返回为真

[ [ -z $str1 ] ]:如果str1包含的是空字符串,则返回为真

[ [ -n $str1 ] ]:如果str1包含的是非空字符串,则返回为真

使用逻辑&&和||能够很容易将多个条件组合起来:

使用示例

if[ [ -n $str1 ] && [ -z $str1 ] ];

then

commands

fi

test命令

..............

posted on 2014-08-11 15:07  逸枫_1987  阅读(193)  评论(0编辑  收藏  举报