一般情况我们使用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命令
..............