linux条件脚本,在shell脚本中进行条件控制以及使用循环

if条件语句语法:

if [ 条件表达式 ]

then

代码

else

代码

fi

注意:在上面的if条件语句中,if和 [ 之间要有空格,而条件表达式和两边的 [ ] 都要有空格,条件表达式不能紧挨着 [ 和 ]。

if条件表达式以fi结束。

Eg.

43c397b618312eed5e6b8cb5b3d94718.png

结果出现了以下问题:

ef4b9819c9a400246ae4ae1b0e18f9c6.png

原因是因为开头在#!后还要有一个/,加上/后解释器错误没有了,代码如下:

59503684928789de3ee80c7ad05bba9a.png

可是仍然有没有那个文件或目录的错误。对于这个错误我觉得是echo后的表达式有问题,于是注销了表达式,改输出small和bigger,结果程序运行正确,输出了small或者bigger。

7101ebccefa71d0f8a90a63532718ef4.png

所以对于echo后的表达式,我把表达式加上双引号,结果运行成功,没有问题了。

9c462567b8468364ca56f079127998e9.png

5bc57f2f7daf513f8231ccce1bf2dac4.png

利用case表达式进行条件判断:

case 变量 in

str1)

命令串;;

str2)

命令串;;

*)

Eg.

b28884cc44e150bd0f05ed4012ac1349.png

33d78710220687ae7d892ae3d282dd10.png

刚才之所以出错,是因为代码没有正确结尾,case条件语句在shell中应该以esca结尾。

又出现错误如下:

6834769998934e813ad8564abaa91403.png

原因:

*后面的)为中文符号,将它改为英文符号,并且case条件语句的结束应该为esca而不是easc,修正后如下:

b3b60e287591e5f763605e20ce52a404.png

就正确了,正确结果如下:

24f50a3cc21873ce10e087c7d0f3da4a.png

在shell脚本中使用for循环

shell中可以使用三种循环:

A、for循环

第一种语法形式:

for var in list

do

命令串

done

注意上面的list的形式可以使用空格分隔的$1 $2 $3,或者空格分隔的值1 2 3。

第二种语法形式:

for var

do

命令串

done

在这种形式中,list被省略了,那么这时list就是指命令行参数,每次循环的var都是一个命令行参数。

eg.输出命令行参数的和

0abf7576b694161b026260796da1e8d2.png

注意上面shell程序中echo命令的参数 -e是为了让\c 和\b生效,其中\c是表示输出加数后不换行,\b是退格的意思删除多余的+号。

运行脚本后出现错误:

7882341868baa6c8d375a09633e51248.png

原因:

expr不能喝test指令的-gt婚后在一起用,要不然将expr改为test,要不然将-gt改为>=

,值得注意的是>=前面要使用\。

1ce6b18cd37ebdee568baec63af1f63b.png

仍然出错为:

a58033a4818863774eebc83c24f09cbd.png

原因为:

sum求和时,等号两端不能有空格。

改为:

0b70f6ebc9a0d01863a9393388cf8e3a.png

运行后结果为:

1931cd0a377bdce914290bf5eeb6c26c.png

B、while循环

语法格式:

while 条件表达式

do

命令行串;

done

eg.输出命令行每个参数

beeb52cefa24214f7d11cd06c2456f2c.png

shift命令将命令行参数左移,是原来处于第二位的参数变成第一位然后输出。

结果为:

3e31def04c0c5f8ab4a755e4f79e0215.png

注意while循环的条件表达式也要用空格将条件表达式与 [ 和 ]分隔开来。

如果要在while中使用另一个变量n,要用 -n 的形式来表示在循环体中使用的一元表达式:

8af60fc700c134824485264e5662beee.png

当然如果while中不添加-n也有一样的结果:

e2fe89824e05a9b87d6e65df7d902bba.png

C、until循环

语法格式如下:

until 条件表达式

do

命令串;

done

0b1331709591d260c1c78e86d0c51c18.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值