Shell脚本编程(二)
shell脚本编程中if、if else的使用以及一些常用到的操作符
if、if else使用方式:
1) if条件
if [ condition ]; #condition为判断条件,condition两边必须有空格,否则执行将报错
then
commands; #commands为执行语句
fi
2) else if和else
if [ condition ];
then
commands;
else if condition;then
commands;
else
commands;
fi
算数比较
对变量或值进行算数条件判断:
条件通常被放置在封闭的中括号内,一定要注意两边的空格!!!
[ $var -eq 0 ] #当$var等于0时,返回真
[ $var -ne 0 ] #当$var不等于0时,返回真
其他重要的操作符如下:
-gt : 大于
-lt :小于
-ge : 大于或等于
-le : 小于或等于
可以按照下面的方法结合多个条件进行测试:
[ $var1 -ne 0 -a $var2 -gt 2 ] #使用逻辑与-a,即and
[ $var1 -ne 0 -o $var2 -gt 2] #使用逻辑或 -o,即or
文件系统相关测试
我们可以使用不同的条件标志测试不同的文件系统相关的属性
[ -f $file_var ] : 如果给定的变量包含正常的文件路径或者文件名,则返回真
[ -x $var ]:如果给定的变量包含的文件可执行,则返回真
[ -d $var ] : 如果给定的变量包含的是目录,则返回真
[ -e $var ] : 如果给定的变量包含的文件存在,则返回真
[ -c $var ] : 如果给定的变量包含的是一个字符设备文件的路径,则返回真
[ -b $var ] : 如果给定的变量包含的是一个块设备文件的路径,则返回真
[ -w $var ] :如果给定的变量的文件可写,则返回真
[ -r $var ] : 如果给定的变量的文件可读,则返回真
[ -L $var ] : 如果给定的变量包含的是一个符号链接,则返回真
使用方法如下:
fpath="/etc/passwd"
if [ -e $fpath ];then
echo File exists; #意思也就是如果有passwd这个文件则打印File exists,否则打印Does not
else
echo Does not;
fi
其他的自己可以实践下
字符串比较
使用字符串比较时,最好使用双中括号,因为有时候采用单括号会出错,最好避免。
[ [ $var1 > $var2 ] ] #如果var1的字符序var2大,则返回真
[ [ $var1 < $var2 ] ] #如果var1的字符序var2小,则返回真
[ [ $var1 == $var2 ] ] #如果var1的字符序var2相等,则返回真
[ [ -z $var1 ] ] #如果var1为空串,则返回真
[ [ -n $var1 ] ] #如果var1为非空字符串,则返回真
实例:
str1="Not empty"
str2=""
if [ [ -n $str1 ] ] && [ [-z $str2 ] ];
then
echo str1 is nonempty and str2 is empty string
fi