Shell之免交互

Here Document 免交互

  • 使用I/O重定向的方式将命令列表提供给交互式程序或命令
  • 是标准输入的一种替代品
  • 可以与非交互式程序和命令一起使用。

语法格式

命令  <<标记
...	
内容			
...
标记

Here Document使用中的一些注意事项:

  • 标记可以使用任意合法字符(通常为EOF)
  • 结尾的标记一定要顶格写,前面不能有任何字符
  • 结尾的标记后面也不能有任何字符(包括空格)
  • 开头标记前后的空格会被省略掉

交互式命令 EOF

(1)免交互执行命令

交互式命令 <<EOF
指定传入内容  
....
EOF

(2)免交互创建并编辑文件内容

cat > 文件 <<EOF
指定文件内容
....
EOF

注意

默认情况下EOF中间的内容支持变量的替换;如果要关闭变量的替换,开头标记要用 '' 括起来,即  <<'EOF'

如果要抑制行首的制表符空白,开头标记前要加 - ,即 <<-EOF

如果要注释多行内容,可用  : <<EOF

expect 免交互

       建立在tcl语言基础上的一个工具,常被用于进行自动化控制和测试,解决shell脚本中交互相关的问题。

使用  expect 需要安装 expect

yum install -y expect

编写expect免交互脚本步骤

(1)先声明解释器

#!/usr/bin/expect

(2)接收位置参数传入

set 变量名 [lindex $argv 0]     

0代表执行脚本时后面跟的第一个位置参数,第二个位置参数用 1 表示,依此类推

(3)使用 spawn 指定交互命令 开启会话跟踪

spawn fdisk /dev/sdb

(4)使用 expect 捕获匹配交互命名的提示信息

expect "命令(输入 m 获取帮助):"

(5)再使用 send 发送需要交互输入的字符串,结尾需要加上回车符

send "n\r"
....

(6)使用一个expect匹配多次

如果能匹配到情况1的提示信息则发送字符串1给交互进程,接着再用情况2匹配提示信息并发送字符串2给交互进程
如果匹配不到情况1的提示信息则继续再用情况2匹配提示信息发送并字符串2给交互进程

expect {
       "情况1" {send "字符串1\r"; exp_continue;}
       "情况2" {send "字符串2\r"}
	   }

(7)所有交互操作完成后,使用 expect eof 或 interact 结束交互会话

  • expect eof(会返回原用户或者原终端界面)
  • interact(会停留在切换的用户或者远程终端界面)
expect eof

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值