Shell流程控制
防伪码:床前明月光,疑是地上霜。流程控制是改变程序运行顺序的指令。
f 4.1 if语句
格式:if list; then list; [ elif list; then list; ] ... [ else list; ] fi
4.1.1 单分支
if 条件表达式; then
命令
fi
示例:
#!/bin/bash
N=10
if [ $N -gt 5 ]; then
echo yes
fi
# bash test.sh
yes
4.1.2 双分支
if 条件表达式; then
命令
else
命令
fi
示例:
#!/bin/bash
N=10
if [ $N -lt 5 ]; then
echo yes
else
echo no
fi
# bash test.sh
no
4.1.3 多分支
if 条件表达式; then
命令
elif 条件表达式; then
命令
else
命令
fi
示例:
#!/bin/bash
N=10
if [ $N -gt 5 ]; then
echo "gt 5"
elif [ $N -gt 6 ]; then
echo "gt 6"
else
echo no
fi
如果第一个条件符合就不再向下匹配。
r 4.2 for语句
格式:for name [ [ in [ word ... ] ] ; ] do list ; done
for 变量名 in 取值列表; do
命令
done
示例:
#!/bin/bash
for i in {1..3}; do
echo $i
done
# bash test.sh
1
2
3
默认 for 循环的取值列表是以空白符分隔,也就是第一章讲系统变量里的$IFS:
#!/bin/bash
for i in 12 34; do
echo $i
done
# bash test.sh
12
34
如果想指定分隔符,可以重新赋值$IFS 变量:
#!/bin/bash
OLD_IFS=$IFS
IFS=":"
STR="12:34:45"
for i in $STR; do
echo $i
done
IFS=$OLD_IFS # 恢复默认值
# bash a.sh
12
34
45
for 循环还有一种 C 语言风格的语法,常用于计数、打印数字序列:
for (( expr1 ; expr2 ; expr3 )) ; do list ; done
#!/bin/bash
for ((i=1;i
页:
[1]