让你成为一名合格运维的必备技能之Shell编程之免交互(EOF免交互、Expect免交互)

本文介绍了Here Document和Expect两种实现免交互的方法。Here Document以标签形式免交互,可用于变量设定、格式控制和多行注释等,使用时需注意标记规范。Expect建立在tcl语言基础上,用于自动化控制和测试,文中介绍了其安装和基本命令,以及直接执行和嵌入执行的方式。

一、Here Document免交互

(以标签的形式实现免交互,标签里面的字符可以自行定义)

(一)、Here Document概述

  • 使用I/O重定向方式将命令列表提供给交互式程序
  • 标准输入的一种替代品
  • 语法格式
命令 <<标记(EOF)
…       (标记之间是传入的内容)
…       
标记(EOF)

(二)、Here Document使用注意事项

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

(三)、Here Document免交互示例

1、通过read命令接收输入并打印

[root@localhost ~]# read i <<EOF
> hello world
> my name is gcc
> EOF
[root@localhost ~]# echo $i
hello world
#######直接赋值,只能赋值一行
[root@localhost ~]# vim a.sh
#!/bin/bash
read i <<EOF
hello world
my name is gcc
EOF
echo $i
[root@localhost ~]# sh a.sh
hello world

2、通过passwd给用户设置密码

[root@localhost opt]# vim a.sh
#!/bin/bash
passwd lisi <<EOF
abc123        #这两行是输入的密码和确认的密码
abc123   
EOF

[root@localhost opt]# sh a.sh 
更改用户 lisi 的密码 。
新的 密码:无效的密码: 密码少于 7 个字符
重新输入新的 密码:passwd:所有的身份验证令牌已经成功更新。

(四)、Here Document变量设定

1、变量替换

在写入文件时会先将变量替换成实际值,再结合 cat 命令完成写入

[root@gcc zhengze1]#vim test.txt 
my name is gcc
--------------------------------------------------
[root@gcc zhengze1]#vim test.sh
#!/bin/bash
filename="test.txt"
name="123"
cat > $filename <<EOF
the number is $name
EOF
---------------------------------------------------
[root@gcc zhengze1]#sh test.sh
[root@gcc zhengze1]#cat test.txt 
the number is 123

2、变量设定

整体赋值给变量,然后通过 echo 命令将变量打印出来

[root@client opt]# num1=111
[root@client opt]# echo $num1
111
[root@client opt]# num2=$(cat <<EOF
> 222
> $num1
> EOF
> )
[root@client opt]# echo $num2
222 111

(五)、Here Document格式控制

1、关闭变量替换功能,按照字符原本的样子输出,不做任何修改或替换

单引号关闭变量替换,就把EOF中的变量当做字符串

[root@localhost opt]# num1=111
[root@localhost opt]#
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

清风~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值