shell中的流程控制
if 条件判断
单分支if 语句
if [ 条件判断式 ] ; then
程序
fi
或者也可以是
if [ 条件判断式 ]
then
程序
fi
一般用第二个的比较多
使用示范:
df -h | grep /vda1 | awk '{print $5}' | cut -d "%" -f 1
双分支if 语句
if [条件表达式]
then
条件成立时,执行的程序
else
条件不成立时,执行的程序
fi
多分支if 条件语句
if [ 条件判断1 ]
then
当条件判断1成立时,执行程序1
elif [ 条件判断2 ]
当条件判断2成立时,执行程序2
...省略更多条件
else
当所有的条件都不成立时,最后执行此程序
fi
case 多分支语句
case 语句和if ... elif ... else 语句一样都是多分支条件语句,不过和 if 多分支条件语句不同的是,
case 语句只能判断一种条件关系, 而if 语句可以判断多种条件关系.
case $变量名 in
"value1")
do something1
;;
"value2")
do something2
;;
"value3")
do something3
;;
esac
case in 和正则表达式
case in 的 pattern 部分支持正则表达式, 也就是说支持以下简单的正则表达式
格式 说明
* 表示任意字符串
[abc] 表示a,b,c三个字符中的任意一个
[m-n] 表示从m到n的任意一个字符. 比如, [0-9] 表示任意一个数字, [a-zA-Z]表示任意一个字母
| 表示多重选择,类似逻辑运算中的或运算. 比如, abc | xyz 表示匹配字符串 "abc" 或者 "xyz"
最后一个分支 *) 并不是什么语法规定,它只是一个正则表达式,表示任意字符串, 匹配什么都能匹配上.
而且 *) 只能放在最后一个分支,不然代码最多到这个分支就结束了
for 循环
语法1
for 变量 in 值1 值2 值3
do
程序
done
这种语法中 for 循环的次数, 取决于in 后面值的个数(空格分隔), 有几个值 就 循环几次, 并且每次循环都把值赋值 给变量,
也就是说假设 in 后面有三个值, for 会循环三次, 第一次循环把值1 赋予变量, 第二次循环把值2 赋予 变量, 以此类推.
这个语法一般只在shell 里有(python也有), 比较适合 运维工程师使用, 相对简单.
语法2
for ((初始值;循环控制条件;变量变化))
do
程序
done
这个是其他语言中也常见的语法.
while循环
while [ 条件判断式 ]
do
程序
done
对while循环 来说,只要条件判断式成立, 循环就会一直继续,直到条件判断式不成立, 循环才会停止
until
不满足条件就执行.
其实就是和while 的相反而已, 用的较少.
until [ 条件判断式 ]
do
程序
done
exit语句
在终端上, 输入exit, 会退出当前登陆的用户
但是在shell脚本中, exit 用于退出当前脚本的, 语法如下
exit [ 返回值 ]
但是这个返回值必须是数字, 因为linux中的规范,返回为0代表命令正确执行, 非零的数字代表非正确执行
break语句和continue语句
break 是跳出整个循环,
continue 是跳出当前循环.