条件测试操作与流程控制语句

在编写Shell脚本时候,经常需要判断两个字符串是否相等,检查文件状态或者是数字的测试等。Shell提供了对字符串、文件、数值等内容的条件测试以及逻辑流程控制

条件测试操作

Linux shell 攻略_第1张图片
常用测试操作

test命令,测试特定的表达式是否成立,当条件成立时,命令执行后的返回值为0,否则为其他数值
格式1
test 条件表达式
格式2
[ 条件表达式 ] //常用格式,使用方括号时,要注意在条件两边加上空格

流程控制语句

if条件语句

if 单分支:当“条件成立”时执行相应的操作

if 条件测试操作
  then 命令序列
fi

      Linux shell 攻略_第2张图片
Linux shell 攻略_第3张图片

if 双分支:当“条件成立”、“条件不成立”时执行不同操作

if 条件测试命令
  then 命令序列1
  else 命令序列2
fi

      Linux shell 攻略_第4张图片
Linux shell 攻略_第5张图片

if 多分支:相当于if语句嵌套,针对多个条件执行不同操作

if 条件测试命令1 ; then
  命令序列1
elif 条件测试命令2 ; then
  命令序列2
elif ...
else
  命令序列n
fi

    Linux shell 攻略_第6张图片
Linux shell 攻略_第7张图片

for循环语句

根据标量的不同取值,重复执行一组命令操作

for 变量名 in 取值列表
do
  命令序列
done

       Linux shell 攻略_第8张图片
Linux shell 攻略_第9张图片

while循环语句

重复测试指令的条件,只要条件为真则反复执行对应的命令操作,直到条件为假。如果使用true作为循环条件能够产生无限循环

while 命令表达式
do
  命令列表
done

     Linux shell 攻略_第10张图片
Linux shell 攻略_第11张图片

case多重分支语句

根据变量的不通取值,分别执行不同的命令操作

case 变量值 in
  模式1)
  命令序列1
;;
  模式2)
  命令序列2
;;
  ……
*)
  默认执行的命令序列
;;
esac

    Linux shell 攻略_第12张图片
Linux shell 攻略_第13张图片

until循环语句

根据条件执行重复操作,直到条件成立为止。Until语句提供了与while语句相反的功能:只要特定条件为假,它们就重复循环,直到条件为真

until 条件测试命令
do
  命令序列
done

       Linux shell 攻略_第14张图片
Linux shell 攻略_第15张图片

shift迁移语句

用于迁移位置变量,将$1~$9依次向左传递

例如:若当前脚本程序获得的位置变量如下:
$1=file1、$2=file2、$3=file3、$4=file4
执行一次shift命令后,各位置变量为:
$2=file2、$3=file3、$4=file4
在执行一次:
$3=file3、$4=file4

循环控制语句

break语句:在for、while、until等循环语句中,用于跳出当前所在的循环体,执行循环体之后的语句
在while中的示例:

while
do
commands
commands

  break  -------- +
           |
commands      |
commands      | 跳出当前循环(通常在循环体中与条件语句一起使用)
          |
done       |
          |
commands   <-----+
commands

continue语句:在for、while、until等循环语句中,用于跳过循环体内余下的语句,重新判断条件以便执行下一次循环

在while中的示例:

while  <-------+
do      |
        |
commands   |  跳回当前循环,重新开始下一次循环(通常在循环体中与条件语句一起使用)
commands   |
        |
  continue----+

commands
commands
commands
done
commands
commands