shell 流程控制
–if
if 语法格式:
if condition
then
command1
command2
...
commandN
fi
if else 语法格式:
if condition
then
command1
command2
...
commandN
else
command
fi
if elif else 语法格式:
if condition1
then
command1
elif condition2
then
command2
else
commandN
fi
实例:
a=10
b=20
if [ $a -lt $b ]
then
echo "a小于b"
else
echo "a大于b"
fi
then 可以和 if 放到一行,需要加分号:
a=10
b=20
if [ $a -lt $b ]; then
echo "a小于b"
else
echo "a大于b"
fi
结果:
a小于b
–for
for 循环语法格式:
for var in item1 item2 ... itemN
do
command1
command2
...
commandN
done
实例1:
for i in 1 2 3 4 5 6
do
echo $i
done
打印从1到6,结果:
1
2
3
4
5
6
实例2:
for i in $(seq 6)
do
echo $i
done
打印从1到6,结果:
1
2
3
4
5
6
实例3:
for i in $(seq 3 6)
do
echo $i
done
打印从3到6,结果:
3
4
5
6
实例4:
for i in $(seq 1 2 6)
do
echo $i
done
打印从1到6,步长为2的值,结果:
1
3
5
实例5:
array=(A B C)
for i in ${array[@]}
do
echo $i
done
打印数组array的值,结果:
A
B
C
实例6:
for i in `ls /etc`
do
echo $i
done
打印/etc目录下的内容
–while
while 循环,用于不断执行一系列命令,也用于从输入文件中读取数据。其语法格式为:
while condition
do
command
done
条件为真,执行后面语句。
实例1:
i=1
while [ $i -le 3 ]
do
echo $i
i=`expr $i + 1`
done
打印1到3的值,结果:
1
2
3
实例2:
cat a.txt | while read line
do
echo $line
done
打印a.txt的每行内容
无限循环:
while true
do
command
done
until 循环,语法格式:
until condition
do
command
done
条件为假,执行后面语句。
until 循环与 while 循环在处理方式上刚好相反。
一般 while 循环优于 until 循环,但在某些时候,也只是极少数情况下,until 循环更加有用。
实例:
i=1
until [ $i -ge 3 ]
do
echo $i
i=`expr $i + 1`
done
打印1到2的值,结果:
1
2
–case
case … esac 为多选择语句,是一种多分支选择结构,
每个 case 分支用右圆括号开始,用两个分号 ;; 表示 break,即执行结束,跳出整个 case … esac 语句,esac(就是 case 反过来)作为结束标记。
可以用 case 语句匹配一个值与一个模式,如果匹配成功,执行相匹配的命令。
case … esac 语法格式如下:
case 值 in
模式1)
command1
command2
...
commandN
;;
模式2)
command1
command2
...
commandN
;;
esac
实例1:
echo '输入 1 到 3 之间的数字:'
echo '你输入的数字为:'
read aNum
case $aNum in
1) echo '你选择了 1'
;;
2) echo '你选择了 2'
;;
3) echo '你选择了 3'
;;
*) echo '你没有输入 1 到 3 之间的数字'
;;
esac
实例2:
script="shell"
case "$script" in
"java") echo "java script"
;;
"python") echo "python script"
;;
"shell") echo "shell script"
;;
*) echo “other script"
esac
跳出循环
在循环过程中,有时候需要在未达到循环结束条件时强制跳出循环,Shell使用两个命令来实现该功能:break 和 continue。
break 命令
break 命令允许跳出所有循环(终止执行后面的所有循环)。
实例:
for i in $(seq 6)
do
if [ $i -eq 4 ]; then
break
fi
echo $i
done
结果:
1
2
3
continue 命令
continue 命令与 break 命令类似,只有一点差别,它不会跳出所有循环,仅仅跳出当前循环。
实例:
for i in $(seq 6)
do
if [ $i -eq 4 ]; then
continue
fi
echo $i
done
结果:
1
2
3
5
6
转载请注明作者和出处,并添加本页链接。
原文链接:
//jiaoqiang.top/post/40