Shell脚本编程-分支与循环

Shell脚本编程-分支与循环

分支与循环是一个编程语言必须具备的结构,在讲解分支与循环之前,我们先要来学习一下控制分支与循环的判断条件。

一、条件判断式

条件判断分为三大类:文件判断运算符、字符串比较运算符和算术比较运算符。表达式可以使用test命令,也可以使用[  ]中括号将其括起来,但是中括号两边要有且仅有一个空格隔开。

1. 判断文件是否存在:[ -e pathname]

-e(exist)存在,如果pathname存在,则判断式为真,否则为假。

2. 判断文件类型

2.1 文件是否是目录:[ -d pathname ]

-d(directory)目录,如果pathname是目录,则判断式为真,否则为假。

2.2 文件是否是普通文件:[ -f pathname ]

-f(file)文件,如果pathname是普通文件,则判断式为真,否则为假。

2.3 文件是否是符号链接:[ -L pahname ]

-L(Link)符号链接,如果pathname是符号链接,则判断式为真,否则为假。

3. 判断文件的权限

3.1 文件是否具有可读权限: [ -r pathname ]

-r(read)可读,如果pathname具有可读权限,则判断式为真,否则为假。

3.2 文件是否具有可写权限:[ -w pathname ]

-w(write)可写,如果pathname具有可写权限,则判断式为真,否则为假。

3.3 文件是否具有可执行权限:[ -x pathname ]

-x(exec)可执行,如果pathname具有可执行权限,则判断式为真,否则为假。

4. 文件的最后修改时间比较

4.1 文件较另一个文件新:[ pathname1 -nt pathname2 ]

-nt(new than),如果pathname1的文件最后更新时间比pathname2新,则判断式为真,否则为假。

4.2 文件较另一个文件旧:[ pathname1 -ot pathname2 ]

-ot(old  than),如果pathname1的文件最后更新时间比pathname2旧,则判断式为真,否则为假。


5. 判断字符串长度

5.1 判断字符串长度为零:[ -z string ]

-z(zero),如果string字符串的长度为0,则判断式为真,否则为假。

5.2 判断字符串长度非零:[ -n string ]

-n(not zero),如果string字符串的长度非0,则判断式为真,否则为假。

6. 字符串相等比较

6.1 判断字符串是否相等:[ string1 = string2 ]

如果string1与string2的字符串完成相同,则判断式为真,否则为假。

6.2 判断字符串是否不相等:[ string1 != string2 ]

如果string与string2的字符串不相等,则判断式为真,否则为假。

7. 算术比较

7.1 等于:[ num1 -eq num2 ]

7.2 不等于: [ num1 -ne num2 ]

7.3 小于:[ num1 -lt num2 ]

7.4 小于或等于:[ num1 -le num2 ]

7.5 大于:[ num1 -gt num2 ]

7.5 大于或等于:[ num1 -ge num2 ]  

二、分支结构

1.if 分支结构

1.1 简单的if分支

if[ 判断式 ];then

   ......

fi

1.2 if-else分支。

if[ 判断式 ];then

   ......

else

   ......

fi

1.3 if-else-if分支

if[ 判断式 ];then

   ......

elif

   ......

else

   ......

fi

2. 逻辑短路分支

2.1 判断式 && 命令

当前面的判断式为真,后面的命令就会被执行,前面的判断式为假,则命令不会被执行。

例如:test 4 -gt 3  &&  echo TRUE

2.2 判断式 || 命令

当前面的判断式为真,后面的命令不会被执行,前面的判断式为假,则执行后面的命令。

3. test分支

[ 判断式 ];命令

当判断式为真,则执行后面的命令,否则不执行。例如:[ 4 -gt 3 ];echo TRUE

4. case分支

case 字符串 in

模式1)command;;

模式2)command;;

....

esac

模式可以是字符串也可以是正则表达式,可以将多个模式用 | 隔开,表示都匹配。注意,在每个命令后面有两个分号。

三、循环结构

1. for循环

for 容器变量 in 列表

do

   ......

done

从列表中,每次取得一项赋值给容器变量,然后进入do处理循环。

2. while循环

while [ 判断式 ]

do

   ......

done

判断式为真,则继续执行do中的内容,为假则结束循环。

3. until [ 判断式 ]

do

   ......

done

until正好与while相反。当判断式为假则继续执行do的内容,为真则结束循环。


4. 跳出机制

4.1. exit [n]

exit后面可以带一个数字表示退出码。exit会停止shell程序的执行,并将返回值设置为n。

4.2. break [n]

中止循环,并跳到下一个命令,N表示跳出嵌套的层数。

4.3. continue [n]

停止循环过程的当前一个反复并且跳到循环中的下一个反复过程的开始部分,n表示忽略的层数。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值