linux shell if for循环,Linux下的shell编程之循环(for循环,while循环)和条件判断(if条件判断,case条件判断)...

一.shell中的for循环

1.for循环的语法格式java

shell中的 for 循环中可使用 break 和 continue 关键字来跳出循环, 和java 用法一致。linux

经常使用的for循环结构有三种:shell

粗略的结构:bash

for    条件测试

dospa

循环主体.net

donehtm

<1>语法一:blog

for   变量    in   值1  值2   值3...get

do

循环主体

done

或者

for   变量    in   {起始值..终止值}                  #这里面的起始值和终止值必须是纯数字,不能是$a,即不能是变量的值

do

循环主体/命令

done

示例1:

4b19ab4a54eb01d5046037a3ffbf6b88.png

41a37e1dfa39c877b4e1e73e46c4d078.png

示例2:

c1962a8c41d9741dbbb91af6ac73ffc2.png

43ead57575c0421d254ede3a4b077086.png

<2>语法二:

for   变量    in     `命令`

do

循环主体

done

示例3:

870910ed027ca46ecd5ca16397c75e21.png

09f4ab7f83aa72114536cdafbdf84c83.png

<3>语法三:

for   ((初始值;循环控制;变量变化))

do

循环主体

done

示例4:

01948515360bb2ae26e4398fae8ef691.png

042a9ce17aa3d49175838376ad716e1c.png

2.for的嵌套循环

2eafed78d4ce56aa2c6391a65475c906.png

6d78ae28beb80887992162a640e4f34f.png

3.for循环的练习题

<1>练习1:编写脚本测试172.25.254网段中的主机网是不是通的。

若是是通的,就显示172.25.254.主机号  is up;若是是不通的,就显示172.25.254.主机号  is  down。

脚本内容

c63f1ef5aff7ec2296664d8de95414b6.png

脚本运行结果

ed2a68f4ca4046df6352318961737f00.png

<2>练习2:编写脚本实现倒计时10秒。

显示 Time   秒数

脚本内容

487b2514d0ce1fcb75b16404b8b01045.png

脚本运行结果

df77ba5544162385f6bf1df073d9141c.png

<3>练习3:编写脚本实现从输入的分钟数和秒数开始改进行时间的倒计时。

显示 Time   分钟:秒

方法一:将分钟数化为秒数

脚本内容

#!/bin/bash

read   -p   "请输入分钟数和秒数:"   a   b

let   time=$a*60+$b

#for   i   in   {$time..1}                  #这行代码的写法是错误的。{起始值  终止值},这里的起始值和终止值都必须是纯数字,不能写成某个变量的值

for   ((i=$time;i>0;i--))

do

echo   -n   "TIME   `expr   $i  /  60`:`expr   $i  %  60` "

echo   -n   -e   "\r"

sleep   1

done

9933519a0b012bb26b8a66b54ae52464.png

脚本运行结果

bbc911d76b3326e310e05e12fb1d3dba.png

方法二:利用for双循环实现

脚本内容

df2647e55a444ef1ece26974c1553d23.png

脚本运行结果

998484459c5b144462daa9e8a11a922c.png

<4>编写脚本实现打印9*9乘法表。

显示1*1=1

2*1=2   2*2=4

.................................

写法一:

脚本内容

0265ba7684b1ca4e2c9c2e93e7625f11.png

脚本运行结果

a68738d4b5531b83806e2fb17a7c06f3.png

写法二:

脚本内容

47ac3d9f6410aadd8be958c2708964f5.png

脚本运行结果

98e927e777f625892308b7c456b1ba5b.png

二.shell中的while循环

1.while循环的语法格式

for循环适用于事先知道循环的次数,对于实现不知道循环的次数,for循环将会一筹莫展。而while循环能够解决实现不知道循

环次数这类问题。对于事先知道循环次数的问题,for循环和while循环是相通的,for循环能解决的问题,while循环也能够解决。

经常使用的while循环的结构有三种:

粗略的结构:

while   条件

do

循环主体

done

<1>语法一:

初始值

while  [  条件判断语句  ]

do

循环主体

变量变化                   #这里变量变化的方式有两种,一种是((a++)),另一种是a=`expr  $a  +  1`

done

示例1:

f7ef10465a443e92f6a05e26afbc1eb7.png

a50ddc062b9e3f54b12878697c470d30.png

<2>语法二:

初始值

while  ((条件判断语句))

do

循环主体

变量变化                                   #这里变量变化的方式有两种,一种是((a++)),另一种是a=`expr  $a  +  1`

done

示例2:

c16c7c2dc3e276051b708822e06c4f07.png

3583db2660e0abb24f0e1729a43fa65c.png

<3>语法三:死循环(不一样于for循环的地方,能解决实现不知道循环次数的问题的缘由所在)

while   true

do

循环主体

done

示例3:

2ce08216ff8ecff4e3405b74638e0207.png

62614a637bccd0a5cecb519f020297eb.png

2.while循环的练习题

编写一个脚本,使用while循环语句新建用户xin{1..20},而且设置这些用户的密码都为"123456"

脚本内容

7f0ddaef7f2c45e09f95e0e26f39351e.png

脚本执行结果

cf73333499c060540348ee16b79cda99.png

三.shell中的if条件判断(else语句是能够没有的)

1.if条件判断的语法格式

经常使用的if条件判断有三种结构:

<1>单分支if语句

if    条件判断;then                    #其中条件判断能够是linux的命令,也能够是[ ]命令的条件判断语句

语句体

fi

示例1:

14745603461f07234f8f466241522920.png

096643ac412c47c8cc25aace7101c85c.png

<2>双分支if语句

if    条件判断;then                    #其中条件判断能够是linux的命令,也能够是[ ]命令的条件判断语句

语句体1

else

语句体2

fi

示例2:

06d2c028955dff55ef829fdc52c3e3cc.png

01888fcfd9acba96889f7cb189e52412.png

<3>多分支if语句

if    条件判断;then                   #其中条件判断能够是linux的命令,也能够是[ ]命令的条件判断语句

语句体1

elif 条件判断;then#其中条件判断能够是linux的命令,也能够是[ ]命令的条件判断语句

语句体2

elif 条件判断;then #其中条件判断能够是linux的命令,也能够是[ ]命令的条件判断语句

语句体3

...                         #表示能够有多个

else

语句体...

fi

示例3:

5206569a962b21596226f1453d3726b9.png

a090d05a95cd2db810c20351289cf0cd.png

四.shell中的case条件判断(*)语句是能够没有的)

1.case条件判断的语法格式

case条件判断适用于须要进行多重分支的应用状况。case条件判断只针对于条件判断是某个(单个匹配模式)或某些(合并

匹配模式)具体的状况而不是一个无限的区间(好比0

个)。对于条件判断是某个(单个匹配模式)具体的状况,case条件判断能实现的效果,if条件判断也能够实现一样的效果。

case语句结构特色以下:

case行尾必须为单词“in”,每个模式必须以右括号“)”结束。

双分号";;"表示命令序列结束。

匹配模式中但是使用方括号表示一个连续的范围,如[0-9];使用竖杠符号“|”表示或。

最后的“*)”表示默认模式,当使用前面的各类模式均没法匹配该变量时,将执行“*)”后的命令序列。

经常使用的case条件判断的结构有两种:

<1>语法一:单个匹配模式

case   $变量名    in

模式1)

命令序列1

;;

模式2)

命令序列1

;;

.....                          #表示能够有多个

*)

默认执行的序列

;;

esac

示例1:

6e2a21289fd061b2d3b19d9977cbbf02.png

cad1f2a1cce38f7c60701d5a655d1881.png

<2>语法二:合并匹配模式

case   $变量名    in

模式1|模式2|模式3|......)              #......表示能够有多个

命令序列1

;;

模式4|模式5|.......)                      #......表示能够有多个

命令序列1

;;

.....                          #表示能够有多个

*)

默认执行的序列

;;

esac

示例2:

f48cd32c3ed576c5ec6aef4561cae7ea.png

cfb8d17d05d37109afc210632e0bdb24.png

2.case条件判断的练习题

编写脚本,实现交互式执行对应的程序功能

第一种写法:(使用echo打印)

脚本内容

5f1437bbdc965352333a4aa0e898cc73.png

5fbeed9ea4d265cb2147f6ab5fa1b15f.png

脚本执行结果

8e78d3f13bf166b46d3483563fdb0e91.png

80d8fb8b020bb94bf566a1d2fa5a8d8e.png

第二种写法:(使用awk命令中的print打印)

脚本内容

3ce2d759cf366884a3fb8544c9b35337.png

5bf70c75ed8c2ac83bcfe7f65b4eb893.png

脚本运行结果

21ef949d606b4cc79eb156690989e3a5.png

c7a53de1325beb5d42315f7e0e940500.png

全部写法汇总:

1904ca623b30b03930e19a4e72563186.png

399422caec0f853127a8d1ea960a996b.png

脚本运行结果:

4e00f99fae74a67f97b250f87ef971bb.png

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值