五、Shell脚本语言-流程控制
- 5.1、"if"语句,提示:
fi
代表结束
语法结构
if [条件] then 代码 fi
- 代码结构
a="iOS" b="HR" if [ $a = $b ] then echo "字符串a等于字符串b" fi
- 5.2、"if else"语句
语法结构
if [条件] then 代码 else 代码 fi
- 代码结构
a="iOS" b="HR" if [ $a = $b ] then echo "字符串a等于字符串b" else echo "字符串a不等于字符串b" fi
- 5.3、"if-else-if-else"
语法结构
if [条件] then 代码 elif [条件] then 代码 else 代码 fi
- 代码结构
a="iOS" b="HR" if [ $a = $b ] then echo "字符串a等于字符串b" elif [ $a ] then echo "字符串a不为空" else echo "字符串a不等于字符串b" fi
- 5.4、"for"循环语句
语法结构
for 变量名 in item1 item2 item3 … do 代码 done
- 代码案例一
for name in "a" "b" "c" "d" do echo ${name} done
- 代码案例二 (特殊的字符必须进行转义)
for name in "I don\`t know" do echo ${name} done
- 代码案例三 :从变量读取列表
value="I don\`t know" for name in ${value} do echo ${name} done
- 代码案例四 :读取目录->通配符
file="/Users/wangchong/Desktop/*" for name in ${file} do echo ${name} done
- 代码案例五 :嵌套循环(类似于C语言写法)
for ((a=1;a < 7; a++)) do echo ${a} done
- 5.5、"while"循环
语法结构
while(条件) do 代码 done
- 代码案例一
a=1 while(($a<10)) do echo ${a} a=`expr $a + 1` done
- 代码案例二:无限循环
a=1 while : do echo "hello" done
- 代码案例三:无限循环
for((::)) do echo "hello" done
- 5.6、"case"语句
语法结构
case 值 in 模式1) 代码 ;; 模式2) 代码 ;; 模式3) 代码 ;; sac
- 代码案例一
number=1 case $number in 1) echo "等于1" ;; 2) echo "等于2" ;; 3) echo "等于3" ;; esac
- 5.7、until循环:不满足条件才会进入 until,与while的用法相反
语法结构
until 条件 do 逻辑代码 done
- 代码案例一
i=1 until (($i > 1)) do echo "i小于等于1" done
- 5.8、跳出循环:break
- <1>、跳出单个循环
for ((i=0;i<10;i++)) do echo "i的值是 $[i]" if [ $i -eq 5 ] then echo "退出循环" break fi done
- <2>、跳出内部循环
for ((i=0;i<10;i++)) do echo "i的值是 $[i]" for ((j=0;j<10;j++)) do echo "j的值是 $[j]" if [ $j -eq 5 ] then echo "退出内层循环,i的值:$[i],j的值:$[j]" break fi done done
提示:
break
与break 1
一个意思, 代表跳出1层循环
- <3>、跳出外部循环
for ((i=0;i<10;i++)) do echo "i的值是 $[i]" for ((j=0;j<10;j++)) do echo "j的值是 $[j]" if [ $j -eq 5 ] then echo "退出内层循环,i的值:$[i],j的值:$[j]" break 2 fi done done
提示:
break 2
代表退出2
层循环
- 5.9、结束当前的循环:continue
for ((i=0;i<5;i++)) do if [ $i -eq 3 ] then echo "结束当前循环的值 i=$[i]" continue fi echo "i的值是 $[i]" done
- 打印结果是:
i的值是 0 i的值是 1 i的值是 2 结束当前循环的值 i=3 i的值是 4
最后奉上几张图