第五节shell脚本中的运行流程控制(5.1)

五, 自动应答

在书写脚本时通常会遇到交互命令的执行, 如何自动完成跟命令的交互, 这就是自动应答的作用

1, 固定位置的交互应答

如果交互命令的问题固定, 那么我们可以通过输入重定向来完成交互动作

示例:

#!/bin/bash
for USERNAME in user1 user2 user3
do
    passwd $USRNAEM <<EOF
    123
    123
    EOF
done

2, 非固定位置的交互应答

如果交互命令的问题位置不固定, 那么我们需要用的 expect 来完成自动应答

示例:

a)创建交互命令

vim ask.sh
#!/bin/bash
read -p "what is your name: " NAME
#read -p "how old are you: " AGE
read -p "which subject you study: " SUB
read -p "Are you happy ? " FEEL

echo $NAME is $AGE\'s old study $SUB feel $FEEL

[!note]

在交互脚本中我们可以使用#注释问题来还原问题有的时候, 有, 有时没的

b)应答语句基本写法

vim demo_answer.exp
#!/usr/bin/expect
set timeout 5
spawn sh ask.sh
expect {
	"name" { send "lee\r";exp_continue  }
	"old" {send "18\r";exp_continue }
	"subject" { send "linux\r";exp_continue }
	"happy" { send "happy\r" }
}
expect eof

[!note]

set timeout 设置问题等待超时

spawn 监控交互来使 expect 可以读取问题

send 发送问题答案,\r 表示回车, exp_continue 表示继续向下应答

expect eof 表示在问题应答完毕后退出 expert 环境, 如果要保留环境可以用 interact

  • 9
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Shell脚本运行另一个Shell脚本可以通过两种方式实现。第一种方式是在当前进程运行另一个Shell脚本,可以使用source命令或点号(.)来执行。这样做会将另一个Shell脚本的内容直接插入到当前Shell脚本的执行环境,不会创建新的进程。例如,可以使用以下命令来运行另一个Shell脚本: ``` source 另一个脚本.sh . 另一个脚本.sh ``` 第二种方式是在新的进程运行另一个Shell脚本,可以使用以下命令来执行: ``` ./另一个脚本.sh ``` 在这种情况下,需要为另一个Shell脚本添加可执行权限,并指定正确的路径。注意,这种方式会创建一个新的Shell进程来执行另一个脚本。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Shell脚本【2】写和运行Shell脚本](https://blog.csdn.net/qq_43624033/article/details/106455124)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [shell----shell脚本运行](https://blog.csdn.net/weixin_45606836/article/details/104377197)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

星鬼123

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

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

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

打赏作者

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

抵扣说明:

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

余额充值