linux中常用的shell脚本语言,Linux系统shell中常用的控制语句及脚本运行控制

for语句

for NUM in 1 2 3 ##NUM是变量,1,2,3是变量的值

for NUM in {1..3} ##变量的值从1到3,{3..1}变量的值从大到小

for NUM in `seq 1 3` ##变量的值从1到3,不可以从大到小

for NUM in `seq 1 2 10` ##变量的值为1-10中的奇数(1,3,5,7,9)

do

echo $NUM ##for所要做的内容

done

for NUM in `seq 1 2 10` ##变量的值为1-10中的奇数(1,3,5,7,9)

do

echo $NUM ##for所要做的内容

done

bab51e80a7704cae2c9997178e4ed202.png执行结果

3b9a9c3646d6769ed9df649ed5563b5f.png

2.

for NUM in `seq 1 10` ##变量的值从1到3,不可以从大到小

do

echo $NUM ##for所要做的内容

done

04f2806ee9d9039710ffc694e3ae12a0.png

执行结果

0077c266c58bac63db3cb7963f6c1f07.png

3.

for NUM in {10..1} ##变量的值从10到1,{10..1}变量的值从大到小

do

echo $NUM ##for所要做的内容

done

3b1b9364e2f5b48276162c26cc3f6711.png

执行结果

42870c399c998a5fd3471011851b6f77.png

for NUM in 1 2 3 ##NUM是变量,1,2,3是变量的值

do

echo $NUM ##for所要做的内容

done

5edaecbe07cea16a2bc048d34396e66c.png

执行结果

045454d421fe1402f58ce6eeeebd7fed.png

for语句示例

for NAME in westos tom linux

do

echo $NAME

done

5e224c491db92574236e218c6f75f0e3.png

执行结果

4dfcda3d9daac452a6db9de21ec030f4.png

倒计时10秒

ea6b730596d6274e50d49432a664a86e.png

d85b83ba20611c10bb9b3d52752258bc.png

682431bdc7a185335e01b88fc24deee5.png

执行效果

ae4893bc2de16efd76fe4d8b317dbd5e.png

将1到20台主机中能连通的主机的主机名采集到/mnt/host_ip中

adfd3c9c17d8ca2bec2c12d3e995d3ea.png

while语句

while 条件

while 条件

do

done

while true

do

read -p "Please input word: " WORD

echo $WORD

done

e8f09a66699f9fded5873d3a4aaad4bc.png

65c20764757681e4c2037997073b2162.png

until false

do

read -p "please input word: " WORD

echo $WORD

done

f56dd2cd9d1e5b315c637366f3668ac2.png

f0209cdfcf9a46638f07bbb519745ad1.png

倒计时1分10秒

SEC=10

MIN=1

for ((SEC=10;SEC>=0;SEC--))

do

while [ "$MIN" = "0" ] && [ "$SEC" = "0" ] ##当倒计时结束,无错误退出

do

exit 0

done

while [ "$SEC" = "0" ] ##当秒数变为0时,分钟数自减,这个条件时为了实现1:00 到 0:59之间的转换

do

echo -n "After $MIN:$SEC end "

echo -ne "\r"

sleep 1

SEC=60 ##不满足这个条件判定

((MIN--)) ##分钟自减1,进入正常秒的部分倒计时

done

echo -n "After ${MIN}:${SEC} end " ##

echo -ne "\r"

sleep 1

done

2d29072dbc579f0aa1a25185647d6d11.png

if语句(多个条件同时判定)

if [ 条件 ]

then 执行内容

elif

then

......

else

fi

判断文件的类型(创建check.sh, 执行check.sh -a file; 进入文件判定;-a 普通文件,-d 目录 -p软链接 判断可以循环执行并在输入exit的时候退出(exit不限制大小写)

43205a3953945b9e10a9f92107f9dbf8.png

5376f00fd6a81b548bd54c6760034591.png

使用sh -x /mnt/check.sh -d /mnt/查看执行了几次比较

case语句

case语句是采用点名制,即匹配到谁谁应答,而if采用的是类比的方式,按顺序依次进行匹配,直到匹配到一致的为止,对于多条件的判定,显然case语句的执行效率比if要高

case $1 in

westos)

echo linux

;;

linux|LINUX)

echo westos

;;

*)

echo "ERROR:input westos or linux following scripts! "

esac

将上述判断文件类型的脚本的比较该为case点名制的比较

使用sh -x /mnt/check.sh -d /mnt/查看执行了几次比较

expect语句

expect是自动应答命令用于交互式命令的自动执行

expect的作用其实和输入重定向EOF有点类似,但是EOF太过机械,如果EOF在应答某个命令的时候出现问题,会导致整个应答出错。但是expect会自动跳过出错的应答,使得其他的命令能正常应答

模拟要应答的内容:

dd14314c64673f4719c081cbfd43366c.png

正常情况下

6b1288aa0542595e52ccb537a05442d0.png

b971aa6f99733c8d09e8cc8993081288.png

当某个应答出现问题

91db69c96048561aa2a21ca026e77382.png

结果出现混乱

ba58dd8532b1f8c0119a21b207aabeae.png

expect环境的配置

yum install expect

命令

作用

spawn

expect中的监控程序,其运行后会监控命令提出的交互问题

send

发送问题答案给交互命令

“\r”

表示回车

exp_continue

标示当问题不存在时继续回答下面的问题

expect eof

标示当问题回答完毕退出

interact

标示问题回答完毕留在交互界面

set NAME[ lindex $argv 0]

定义变量 标示expect脚本的第一串字符

当执行expect脚本时自动登录

9e5c383741023509b86c1889d700485b.png

脚本中的语句控制器

exit n

脚本退出,退出值为n

break

退出当前循环

continue

提前结束循环内部的命令,但不终止循环(结束本次循环)

示例说明

exit

1feaee18b30985b9e9d85dff682a14e4.png

执行结果

048a6e2ac0ad5d5e6bf261f08ca9c88c.png

break

eefd2279999ceacc569f25d994271e28.png

执行结果

c7df39f378251ea3492a534e53c238c3.png

ddeaccfc1b232a148051fdf6517c98a8.png

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值