免交互“<<EOF“与“expect“

本文介绍了Linux中Here Document的概念和用法,包括变量替换和多行注释,并展示了expect工具的安装、基本命令如spawn、expect、send等,以及如何编写expect脚本实现ssh无密码登录等自动化交互任务。
摘要由CSDN通过智能技术生成

Here Document

概念

使用I/O重定向的方式将命令列表提供给交互式程序或命令,比如 ftp、cat或read 命令。
HereDocument是标准输入的一种替代品,可以帮助脚本开发人员不必使用临时文件来构建输入信息,而是直接就地生产出一个文件并用作命令的标准输入。

基本语法格式:
命令<<标记



标记

特殊字符"<<"在标记和命令之前,这样做的目的是将命令块的输出重定向到程序或命令的
stdin。标记的选择要确保不会出现在其他地方,避免出现混淆;两个标记之间的内容被当做是一个文件并用作"命令"的标准输入。另外Here Document也可以与非交互式程序和命令一起使用。

四点注意事项:
标记可以使用任意的合法字符;
结尾的标记一定要顶格写,前面不能有任何字符;
结尾的标记后面也不能有任何字符(包括空格);
开头的标记前后的空格会被省略;

[root@localhost ~]# cat <<EOF //直接把输入的从命令行输出
>hello world
>EOF
hello
[root@localhost ~]# cat > name <<EOF //输入保存到文件
>liuchun
>zhougang
>EOF
[root@localhost ~]# cat name
liuchun
zhougang
[root@localhost ~]# cat >> name <<EOF   //追加输入保存到文件
>liufei
>EOF
[root@localhost ~]# cat name
liuchun
zhougang
liufei

案例1:创建yum源

[root@localhost ~]# cat > test.repo <<EOF
>[test]
>name=test
>baseurl=file:///mnt
>enabled=1
>gpgcheck=0
>EOF

另外写法1 cat < local.repo
另外写法2 tee test1.txt <<EOF

1.1通过read命令接收输入并打印,输入值是两个EOF标记之间的部分,也就是"10",这将作为变量a的值

[root@localhost ~]# read a <<EOF
>10
>EOF
[root@localhost ~]# echo $a
10

1.2通过passwd给用户设置密码
案例1:给用户创建密码

[root@localhost ~]# passwd zhangsan <<EOF
>123456
>123456
>EOF

更改用户zhangsan的密码。
新的密码:无效的密码:密码少于8个字符
重新输入新的密码: passwd:所有的身份验证令牌已经成功更新。

变量设定(支持变量替换)

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

[root@localhost ~]# aa=$(cat<<EOF   //变量替换
>$a
>EOF
>)

echo $aa

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

#!/bin/ bash
doc_file="KY17.txt"
i="KY17"
cat > $doc_file <<EOF
welcome to class $i
EOF

this is $i classroom
cat KY17.txt

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

#!/bin/bash
ivar="Great! Beautyful!"
myvar=$
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值