shell流程控制学习


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 是跳出当前循环.


文章作者: 陌上人如玉
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 陌上人如玉 !
  目录