Shell免交互操作

目录

一、Here Document 免交互

1.免交互定义

2.格式和使用方法

二、Expect 免交互

1.简介

2.格式和使用

(1)声明解释器

(2)spawn(跟踪)

(3)expect(期望)

(4)send(输入)

(5)结束符

(6)set

(7)exp_continue

(8)send_user

(9)接收参数

3.操作实例

(1)passwd修改用户密码

(2)su切换用户

(3)ssh远程登录


一、Here Document 免交互

1.免交互定义

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

2.格式和使用方法

命令 <<标记 //标记可以使用任意合法字符(通常为EOF)

...

内容

...

标记 //结尾标记必须顶格,后面也不能跟任何字符

//1.wc -l 统计读取到多少行
[root@localhost1 ~]#wc -l <<EOF
> a
> b
> c
> EOF
3
​
//2.read免交互给变量赋值(只会读取第一行内容)
[root@localhost1 ~]#read i <<EOF
> 123
> 456
> EOF
[root@localhost1 ~]#echo $i
123
​
//3.免交互修改用户密码
[root@localhost1 ~]#passwd zhangsan <<EOF
> abc1234
> abc1234
> EOF
更改用户 zhangsan 的密码 。
新的 密码:无效的密码: 密码未通过字典检查 - 过于简单化/系统化
重新输入新的 密码:passwd:所有的身份验证令牌已经成功更新。

搭配tee使用

tee //同时支持标准输入和标准输出(默认效果是覆盖)

tee -a //追加输出和输入

[root@localhost1 ~]#cat > test.txt <<EOF
> hello
> world
> EOF
[root@localhost1 ~]#cat test.txt
hello
world
​
[root@localhost1 ~]#tee test.txt <<EOF
> 123
> 456
> 789
> EOF
123
456
789
[root@localhost1 ~]#cat test.txt
123
456
789
​
[root@localhost1 ~]#tee -a test.txt <<EOF
> abc
> def
> EOF
abc
def
[root@localhost1 ~]#cat test.txt
123
456
789
abc
def

搭配变量使用

​
[root@localhost1 ~]#vim test.sh
#!/bin/bash
file="test.txt"
name="zhangsan"
cat > $file << EOF
my name is $name
EOF
​
[root@localhost1 ~]#cat test.txt
my name is zhangsan


​

实现多行注释

Bash 的默认注释是#,该注释方法只支持单行注释;Here Document 的引入解决了多行注释的问题。(这里只做介绍,一般还是建议使用#做注释)

标记前加 : 代表什么都不做的空命令。中间标记区域的内容不会被执行,会被bash 忽略掉,因此可达到批量注释的效果。

[root@localhost1 ~]#vim test.sh
#!/bin/bash
: << EOF
以下为注释的内容
A=abc
n=123
EOF
echo $A
echo $n
​
//输出了两个空值
[root@localhost1 ~]#bash test.sh

二、Expect 免交互

1.简介

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值