shell 执行流控制

for循环

for 定义变量
do 使用变量,执行动作
done 结束标志
格式1:
for LYUEYUE in `seq 1 2 10` (1-10,步长为2)或 seq 2 2 10(2-10,步长为2)
do
echo $LYUEYUE
done
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
格式2:
for LYUEYUE in 1 2 3
do
echo $LYUEYUE
done
在这里插入图片描述
在这里插入图片描述
格式3: 可以倒序
for LYUEYUE in {3··1}
do
echo $LYUEYUE
done
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
格式4:
shell中的运算要使用双括号来表示
for ((LYUEYUE=0;LYUEYUE<10;LYUEYUE++))
do
echo $LYUEYUE
done
在这里插入图片描述
在这里插入图片描述
补充:展示双括号的作用
在这里插入图片描述

for命令练习

check_host.sh
用此脚本检测10台与您当前主机直连主机是否网络通畅
在这里插入图片描述
在这里插入图片描述

while循环

while ture:条件为真
do :条件成立所作循环动作
done
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

until

until false:条件为假
do:条件不成立所作循环动作
done
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

if命令

if
then
elif
then
else
fi
在这里插入图片描述
在这里插入图片描述

if命令练习

check_file.sh
please input filename: file
file is not exist
file is file
file is direcory
此脚本会一直询问直到用户输入exit为止
自己:
在这里插入图片描述
在这里插入图片描述
改进:
在这里插入图片描述
在这里插入图片描述

case命令(点名语句)

case $1 in
word1|WORD1)
action1
;;
word2|WORD2)
action2
;;
*)
action3
esac
在这里插入图片描述
在这里插入图片描述

case命令练习

system_watch.sh disk memory upload (每秒显示)
disk 监控磁盘使用情况
memory 监控内存使用情况
upload 监控启动负载
改进:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

expect命令

可以通过检测问题关键字进行应答,如果一条问题被注释掉了,except检测不到相应的关键字就会一直等待,我们可以设置等待时间来解决这个问题。
问题脚本:ask.sh
#!/bin/bash
read -p “What’s your name:” NAME
read -p “How old are you: " AGE
read -p “Which objective: " OBJ
read -p “Are you ok? " OK
echo $ NAME is $ AGE’s old study $ OBJ feel $ OK
应答脚本:answer.exp
#!/usr/bin/expect
set timeout 1
set NAME [ lindex $argv 0 ](表示expect脚本后跟的第一串字符,依此类推)
set AGE [ lindex $argv 1 ]
set OBJ [ lindex $argv 2 ]
set FEEL [ lindex $argv 3 ]
spawn ./ask.sh(监控)
expect {
“name” { send " $NAME\r”;exp_continue }
“old” { send " $AGE\r”;exp_continue }
“objective” { send " $OBJ\r”;exp_continue }
“ok” { send " $FEEL\r" }
}
expect eof
实验步骤:
(1)新建anser.sh脚本
在这里插入图片描述
在这里插入图片描述
(2)安装expect
在这里插入图片描述
(3)新建anser.exp文件
在这里插入图片描述
(4)测试
在这里插入图片描述

expect命令练习

auto_ssh 192.168.9.100 red
可以自动连接目标主机当目标主机网络不通时报错
自己:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
改进:
在这里插入图片描述
在这里插入图片描述

continue break exit命令

contiue:终止当前此次循环提前进入下个循环
break:终止当前所在语句所有动作进行语句外的其他动作
exit:脚本退出
实验步骤:
1.continue
发现当lyueyue等于5时执行完echo “hello”后直接退出这次的循环,没有执行echo $lyueyue命令。
在这里插入图片描述
在这里插入图片描述
2.break
发现直接退出循环
在这里插入图片描述
在这里插入图片描述
3.exit
这次使用sh执行jump.sh脚本,否则会直接退出当前shell。
在这里插入图片描述
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值