shell循环

First Post:

Last Update:

shell 循环


for 循环

语法结构:

1
2
3
4
for <变量名> in <取值列表>
do
<循环体>
done

案例:

1
2
3
4
5
6
7
8
#{1..10}从1到10
for i in {1..10}
do
echo $i
sleep 3 #等待3秒
done

# $# 代表参数个数

退出程序或循环:

  1. exit 退出整个程序
  2. break 退出当前循环程序
  3. continue 退出此次循环, 进行下一次循环

while until 循环

while 语法结构:

1
2
3
4
while <条件测试>          #条件为真停止循环
do
<循环体>
done

于 while 差不多
util 语法结构

1
2
3
4
until <条件测试>          #条件为假停止循环
do
<循环体>
done

expect 语言

expect 为一门独立的语言
用于完成自动交互, 即模拟人工输入的行为
安装:

1
apt install expect tcl

例:
解决 ssh 交互

1
2
3
4
5
6
7
8
9
10
11
vim ssh.exp

#!/usr/bin/expect (这一段必须写)
spawn ssh root@192.168.31.10 #spawn 启动一个shell程序

expect {
"yes/no"{send "yes\r", exp_continue} #文本匹配到了什么, 就干什么; \r为回车符;若没有"yes/no", 用exp_continue跳过
"password:" {send "123456\r"}; #分号为结束符, 结束操作
}
interact #保存交互界面
#若不加interact, 会将程序杀死

执行 expect 程序

1
./ssh.exp