Shell脚本编程(二)

时间:2021-08-06 22:08:17
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