一.for循环
seq命令:用于产生某个数到另外一个数之间的所有整数
1.for语句
for NUM in 1 2 3
for NUM in {1…3}
for NUM inseq 1 3
或者 for NUM inseq 1 2 10
do
done
2.for语句示例
- 编辑脚本,实现计数
[root@shell mnt]# vim test.sh
脚本编辑内容如下:
检测如下:
[root@shell mnt]# vim test1.sh
- 编写循环脚本,可浏览目录
- 用seq命令实现计数
练习:
(1)编辑一个文件,检测该文件下的ip,如果网卡开着的话显示up,如果关闭的话显示down
脚本编辑内容为:
检测如下:
(2)写一个脚本实现30s的倒计时
脚本内容:
二.while循环
1.while语句
while 条件
do
done
2.while语句示例
until表示条件为假的时候,while表示条件为真的侍候
(1)
练习:
(1)编写一个脚本,用while语句实现用户的建立和删除
脚本编辑如下:
验证如下:
三.if判定语句
1.if语句
if
then
elif
then
…
else
fi
2.if语句示例
(1)
(2)
判定输入的是否为一个文件,是文件的话输出文件存在,不是文件的话输出文件不存在.
[root@shell mnt]# vim check_file.sh
(3)
实现1分10秒的倒计时
脚本编辑内容如下:
验证如下:
注:clear表示清屏;sleep 1表示每隔1s计时1次
(4)
四.case语句
1.case语句
case
word1 )
action1
;;
word2 )
action2
;;
…
*)
action_list
esac
2.case语句示例
五.expect语句
1.expect语句
expect语句是自动应答命令用于交互式命令的自动执行
sapwn | 是expect中的监控程序,其运行后会监控命令提出的交互问题 |
---|---|
send | 发送问题答案给交互命令 |
“\r” | 表示回车 |
exp_continue | 标示当前问题不存在时继续回答下面的问题 |
expect eof | 表示当问题回答完毕时退出expect环境 |
interact | 标示问题回答完毕留在交互界面 |
set NAME [ index $argv n ] | 定义变量 |
2.expect的使用及示例
(1)expect的使用
-
expect不同于脚本,使用前要安装该软件
(2)expect的示例
编写脚本 :
注:由于执行脚本时如果有一个问题不回答的话,则会显示该问题的答案为空但是还是会显示,但是如果用expect应答的话,如果不给问题的答案则会自动跳过,显示的时候也不会显示该问题,验证如下:
查看expect支持环境:
编写expect自动应答工具脚本:
验证:
- 编辑脚本连接ip
shell和expect时不能同时用的但是用到输出重定向可以实现shell与expect的共用
脚本编辑内容如下:
验证如下:
- 编辑脚本检测ip为172.25.254.1到172.25.254.5的主机是否开着,如果开着则将结果定向到文件中
六.脚本中的语句控制器
exit n ##脚本退出,退出值为n
注:exit 0是代码正常时候的退出值,$?是显示上一条命令的输出结果
continue : 提前结束循环内部的命令,但不终止循环
break:退出当前循环