shell 流程控制
sh流程控制不可为空
if else
if 语法格式:
if condition
then
command1
command2
...
fi
写成一行:
if [ $(ps -ef | grep -c "ssh" ) -gt 1 ]; then echo "true"; fi
if-else
格式:
if condition
then
command1
command2
..
else
coamnd
fi
if else-if else
格式:
if condition1
then
command1
elif condition2
then
command2
else
commandn
fi
例:判断两个变量是否相等:
a=10
b=20
if [ $a == $b ]
then
echo "a等于b"
elif [ $a -gt $b ]
then
echo "a 大于b"
else
echo "a小于b"
fi
for 循环
格式:
for var in item1 item2 ..
do
command1
command2
.....
done
写成一行:
for var in item1 item2 ....; do command1; do command2... done;
例:
for loop in 1 2 3 4 5
do
echo "The value is : $loop"
done
结果:
The value is: 1
The value is: 2
The value is: 3
The value is: 4
The value is: 5
while语句
格式:
while condition
do
command
done
例:
int=1
while (( $int<=5 ))
do
echo $int
let "int++"
done
输出:
1
2
3
4
5
注:Bash let命令用于执行一个或多个表达式,变量计算不需要加$.
while循环可用于读取键盘信息。下面例子中,输入信息被设置为变量FILM。
echo ‘按下<CTRL_D> 退出’
echo -n ‘输入你喜欢的网址:'
while read FILM
do
echo "$FILM 是一个好网站"
done
结果:
按下<CTRL_D>退出
输入你喜欢的网址:goole
goole是一个好网址
until循环
until循环执行一系列命令直到条件为true.
语法:
until condition
do
command
done
例:
a=o
until [ ! $a -lt 6 ]
do
echo $a
a="expr $a + 1"
done
输出:
0
1
2
3
4
5
case
shell case语句为多选择语句。可以用case匹配一个值和一个模式,如果匹配成功,执行相匹配的命令。
格式:
case 值 in
模式1)
command1
command2
....
;;
模式2)
command1
command2
...
;;
esac
例:
echo '输出1到3之间的数字:'
echo '输出的数字为:'
read $aNum
case $aNum in
1) echo "你选择了1"
;;
2)
echo "你选择了2"
;;
3)echo "你选择了3"
;;
*)echo "没有输入1-3之间的数字"
;;
esac
输出:
输出1到3之间的数字:
输入的数字:
3
你选择了 3
注:如果case无匹配模式,使用 * 捕捉该值,再执行后面的命令。
跳出循环
break 和 continue
- break命令:允许跳出所有循环(即终止执行后面的所有循环)。
- continue:跳出当前循环。
while实例
while:
do
echo -n "输入1到5 之间的数字:"
read aNum
case $aNum in
1|2|3|4|5) echo "你输入的数字为$aNum!"
;;
*) echo "你输入的数字不在指定区间!"
break
;;
easc
done
输出:
输入1到5之间的数字:7
你输入的数字不在指定区间
continue实例
while:
do
echo -n "输入1到5 之间的数字:"
read aNum
case $aNum in
1|2|3|4|5) echo "你输入的数字为$aNum!"
;;
*) echo "你输入的数字不在指定区间!"
continue
echo "游戏结束"
;;
easc
done
当输入大于5的数字时,该循环不会结束