shell 流程控制

shell流程控制

[TOC]

  • sh的流程控制不可为空

1. if else

  • if else
1
2
3
4
5
6
7
8
9
if condition
then
condition1
condition2
.......
conditionN
fi
#写成一行(适用于终端命令行)
if [ $(ps -ef | grep -c "ssh") -gt 1 ]; then echo 'true'; fi
  • if else-if else
1
2
3
4
5
6
7
8
9
if condition1
then
command1
elif condition2
then
command2
else
commandN
fi

2. for

  • for in
1
2
3
4
5
6
7
8
9
for var in item1 item2 ... itemN
do
command1
command2
...
commandN
done
#写成一行
for var in item1 item2 ... itemN; do command1; command2… done;

3. while

  • while
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#语法
while condition
do
command
done

#无限循环
while :
do
command
done
或者
while true
do
command
done
或者
for (( ; ; ))
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#示例eg:

while
#此处使用了let命令,它用于执行一个或多个表达式,变量计算中不需要加入$来表示变量
int=1
while(( $int<5 ))
do
echo $int
let "int++"
done

# while循环可以读取键盘信息
echo '按下<Control-D>退出'
echo -n '输入你最喜欢的电影:'
while read movie
do
echo "Yeah, $movie is a good movie"
done

#运行输出:
emoji:shell penn$ . flow.sh
1
2
3
4
按下<Control-D>退出
输入你最喜欢的电影:肖申克的救赎
Yeah, 肖申克的救赎 is a good movie
美丽心灵
Yeah, 美丽心灵 is a good movie

4. until

until 类似于某些语言的 do ……. while
until 循环执行一系列命令直至条件为 true 时停止

1
2
3
4
until condition
do
command
done

5. case

多选择语句,类似switch…case
取值可以为变量或常数,遇到;;结束
没有匹配则执行默认选择:*)…… ;; 结束

1
2
3
4
5
6
7
8
9
10
11
case 值 in
模式1)
command1
command2
...
commandN
;;
模式2)
...
;;
esac
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#示例eg:
echo '输入 1 到 4 之间的数字:'
echo '你输入的数字为:'
read aNum
case $aNum in
1) echo '你选择了 1'
;;
2) echo '你选择了 2'
;;
3) echo '你选择了 3'
;;
4) echo '你选择了 4'
;;
*) echo '你没有输入 1 到 4 之间的数字'
;;
esac

6. 跳出循环

  • break 结束循环
  • continue 结束本次循环

[TOC]

代码位置:
flo

起风了,您的支持将鼓励我继续创作!