一、for循环
for语句元素:
for #定义变量
do #使用变量,执行动作
done #结束标志
格式1:
#!/bin/bash
for I in 1 2 3 #in表示赋值,设定I的值为1,2,3
do
echo $I
done
格式2:
#!/bin/bash
for I in `seq 1 2 10` #其中2表示跨度为2,取值从1到10的奇数
do
echo $I
done
格式3:
for I in {5..1}
do
echo $I
done
格式4:
#!/bin/bash
for ((I=0;I<10;I++)) #运算的方式,++表示自加一
do
echo $I
done
二、while
while语句含义:表示如果判断条件为真,则一直循环执行语句
语句元素:
while true #条件为真,进入循环
do #条件成立所做的循环动作
done
例如:
三、until
与while语句相反,表示如果条件不成立,循环做的动作。
语句元素:
until false #条件为假
do #条件不成立所做的循环动作
done
四、if
语句用来表示判定,可以做多次判定。
语句元素:
if
then
elif
then
...
else
fi
例如:判定文件类型
五、case
case $1 in
word1|WORD1)
action1
;;
word2|WORD2)
action2
;;
*) #表示上述情况都不是时,执行action3
action3
esac
例如:
注意:case语句在执行时,不是依次往下执行每条语句,而是只需要执行一次,找到满足的相应语句即可。简单理解为“点名”。
六、expect自动应答
- expect 是自动应答命令,用于交互式命令的自动执行
首先需要系统中安装expect插件:dnf install expect -y - 语句元素:
spawn #是 expect 中的监控程序,其运行后会监控命令提出的交互问题
send #发送问题答案给交互命令
\r #表示回车
exp_continue #表示当问题不存在时继续回答下面的问题
expect eof #表示问题回答完毕退出 expect 环境
interact #表示问题回答完毕留在交互界面
set NAME [ lindex $argv n ] #定义变量。表示NAME变量是expect脚本后跟随的第一串字符
set timeout #表示定义等待时间
示例:编写一个提出多个问题的脚本,使用expect完成自动应答
问题脚本:vim ask.sh
普通手动交互式应答: 执行脚本,输入问题的答案,即可看到问题与答案的组合输出的结果
在此基础上,可以使用输入重定向的多行录入编写EOF应答脚本,解决手动输入的问题;
但存在当问题脚本做出改变时,EOF的应答脚本不能自动跟随做出改变。最好的解决办法就是使用expect自动应答
expect自动应答:
注意脚本为exp格式,调用脚本时采用expect
七、break、continue、exit
字符 | 含义 |
---|---|
contiue | 终止当前此次循环提前进入下个循环 |
break | 终止当前所在语句所有动作进行语句外的其他动作 |
exit | 脚本退出 |