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

在这里插入图片描述执行结果
在这里插入图片描述
2.

for NUM in `seq 1 10`  ##变量的值从1到3,不可以从大到小
do
		echo $NUM       ##for所要做的内容
done

在这里插入图片描述
执行结果
在这里插入图片描述
3.

for NUM in {10..1}       ##变量的值从10到1,{10..1}变量的值从大到小
do
		echo $NUM       ##for所要做的内容
done

在这里插入图片描述
执行结果
在这里插入图片描述

for NUM in 1 2 3        ##NUM是变量,1,2,3是变量的值
do
		echo $NUM       ##for所要做的内容
done

在这里插入图片描述
执行结果
在这里插入图片描述

for语句示例

for NAME in westos tom linux
do 
           echo $NAME
done

在这里插入图片描述
执行结果
在这里插入图片描述

倒计时10秒

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
执行效果
在这里插入图片描述

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

在这里插入图片描述

while语句

while 条件
while 条件
do
done
while true
do
		read -p "Please input word: " WORD
		echo $WORD
done

在这里插入图片描述
在这里插入图片描述

until false
do
		read -p "please input word: " WORD
		echo $WORD
done

在这里插入图片描述
在这里插入图片描述

倒计时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

在这里插入图片描述

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

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

在这里插入图片描述
在这里插入图片描述
使用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会自动跳过出错的应答,使得其他的命令能正常应答
模拟要应答的内容:
在这里插入图片描述
正常情况下
在这里插入图片描述
在这里插入图片描述
当某个应答出现问题
在这里插入图片描述
结果出现混乱
在这里插入图片描述
expect环境的配置

yum install expect 
命令作用
spawnexpect中的监控程序,其运行后会监控命令提出的交互问题
send发送问题答案给交互命令
“\r”表示回车
exp_continue标示当问题不存在时继续回答下面的问题
expect eof标示当问题回答完毕退出
interact标示问题回答完毕留在交互界面
set NAME[ lindex $argv 0]定义变量 标示expect脚本的第一串字符
当执行expect脚本时自动登录

在这里插入图片描述

脚本中的语句控制器

exit n脚本退出,退出值为n
break退出当前循环
continue提前结束循环内部的命令,但不终止循环(结束本次循环)

示例说明

exit

在这里插入图片描述
执行结果
在这里插入图片描述

break

在这里插入图片描述
执行结果
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值