目录
Shell 流程控制
IF
if else
if else-if else
for 循环
while 语句
until 循环
case ... esac
无限循环
跳出循环
语法格式:
if condition then command1 command2 ... commandN fi
注:condition 一般为条件表达式。
语法格式:
if condition then command1 command2 ... commandN else command fi
语法格式:
if condition1 then command1 elif condition2 then command2 else commandN fi
if else 的 [...] 判断语句中大于使用 -gt,小于使用 -lt。
if [ "$a" -gt "$b" ]; then ... fi
if else如果使用 ((...)) 作为判断语句,大于和小于可以直接使用 > 和 <。
if (( a > b )); then ... fi
一般格式:
for var in item1 item2 ... itemN do command1 command2 ... commandN done
注:
(1)当变量值在列表里,for 循环即执行一次所有命令;
(2)in 列表可以包含替换、字符串和文件名;
#!/bin/bash
for a in 1 2 3 4 5 6
do
echo "数字:$a"
done
for b in I am Tom
do
echo "字符串:$b"
done
用于不断执行一系列命令,也用于从输入文件中读取数据。
while condition do command done
#!/bin/bash
a=2
while(($a<6))
do
echo "数字为:$a"
let "a++"
done
while循环读取键盘信息
#1bin/bash
echo "输入单词:"
while read A
do
echo "$A是一个单词"
done
(1)until 循环执行一系列命令直至条件为 true ;
(2)until 循环与 while 循环在处理方式上刚好相反;
(3)一般 while 循环优于 until 循环。
一般格式:
until condition do command done
注:返回值为 false,则继续执行循环体内的语句,否则跳出循环。
#!/bin/bash
a=5
until [ ! $a -lt 10 ]
do
echo $a
a=`expr $a + 1`
done
(1)case ... esac 为多选语句;
(2)switch ... case 语句类似,是一种多分支选择结构,每个 case 分支用右圆括号开始,用两个分号 ;; 表示 break;
(3)esac(就是 case 反过来)作为结束标记;
(4)可以用 case 语句匹配一个值与一个模式,如果匹配成功,执行相匹配的命令。
一般格式:
case 值 in 模式1) command1 command2 ... commandN ;; 模式2) command1 command2 ... commandN ;; esac
注:
(1)case 工作方式如上所示,取值后面必须为单词 in;
(2)每一模式必须以右括号结束;
(3)取值可以为变量或常数,匹配发现取值符合某一模式后,其间所有命令开始执行直至 break;
(4)取值将检测匹配的每一个模式。一旦模式匹配,则执行完匹配模式相应命令后不再继续其他模式。如果无一匹配模式,使用星号 * 捕获该值,再执行后面的命令。
#1bin/bash
echo "输入1-3的数字:"
read A
case $A in
1) echo "输入的是$A";;
2) echo "输入的是$A";;
3) echo "输入的是$A";;
*) echo "输入的是$A,不是1-3";;
esac
语法格式:
while : do command done
while true do command done
for (( ; ; ))
有时候需要在未达到循环结束条件时强制跳出循环。break、continue
break 命令
跳出循环
continue命令
跳出当前循环