目录
一、shell函数
1.作用
为了简化重复的劳动,shell函数可以实现脚本某些特定功能的模块化,同时也方便脚本的理解。
2.函数的格式
①
函数名 () {
commands
}
②
function 函数名 {
commands
}
③
function 函数名 () {
commands
}
3.查看函数
declare -F 查看当前系统的所有函数
declare -f 查看当前系统的所有函数的定义规则
4.函数的作用范围
①函数在shell脚本中仅在当前shell环境中生效
②shell脚本中变量默认全局有效
③将变量限定在函数内部使用local命令
这里的a只在函数内部有效
5.函数的简单应用
①.计算阶乘
输入任意一个数字,计算阶乘
②.检测防火墙是否关闭
创建一个函数
外部引用
PS:注意不要使用系统已经定义的函数,否则将会使相应的指令失效。
二、免交互
1、简介
免交互expect时建立在tcl语言基础上的一个工具,常被用于进行自动化控制和测试,解决shell脚本中交互相关的问题。通过对关键字的追踪,自动输入需要交互的命令,完成自动化操作。
2、expect主要作用
①、追踪需要交互的指令
spawn表示开启一个关键字追踪
②、捕捉提示进行交互的关键词
expect
③、传入交互指令,回车执行
send
3、基本命令
①脚本解释器
expect脚本中首先会引入文件,表明使用的是哪一个shell,否则不识别
#!/usr/bin/expect
②、spawn
spawn后面通常跟一个linux执行命令,表示开启一个会话、启动进程
③、expect
判断上一个输出结果中是否包含指定的字符
④、send
向进程发送字符串,用于模拟用户的输入;该命令不能自动回车执行,一般要加、r或者是、n
⑤、结束符expect eof/interact
交互结束
expect eof 等待执行结束,退回到原用户,与spawn对应
interact 执行完成后保持交互后状态,把控制权交给控制台,会停留在目标终端而不会退回到原终端,此时可以手动操作。
⑥、set
expect默认超时时间是10s,可以手动设置。如想不限制超时时间,则可以设置超时时间为-1
⑦、exp_continue
exp_continue附加于expect之后,可以继续捕捉关键词,进行下一步操作
⑧、send_user
表示回显命令,相当于echo
4、基本格式
#!/usr/bin/expect << -EOF //-可以省略
spawn commond
expect {
" 关键词" //获取的内容和发送的内容不能在同一行,否则执行不成功
{send "需要交互的指令\r";exp_continue}
"关键词"
{send "需要交互的指令\r";}
}
EOF