如何在Shell脚本中通过另一个脚本传递回车键作为输入值
自动给Shell脚本提供回车键输入的几种方法
- 方法1:使用
echo管道传递回车
直接通过管道把换行(对应回车键)传给setup.sh,echo默认输出后自带换行,刚好满足需求。在sample.sh中可以这样写:
# 先安装前置依赖 sudo apt install -y 你的依赖包名称 # 自动传递回车给setup.sh echo | ./setup.sh
如果脚本中有多处需要回车确认,可使用echo -e "\n\n"传递多个换行。
- 方法2:用
yes命令自动回复yes命令默认会循环输出指定内容,让它输出空字符串就能持续提供回车输入:
yes "" | ./setup.sh
这个方法适合脚本存在多个回车确认提示的场景,无需手动逐个处理。
- 方法3:使用
expect脚本处理复杂交互
如果setup.sh有多种不同的交互提示,expect能精准控制每一步交互。先安装expect工具:
sudo apt install -y expect
编写自动交互脚本(例如命名为auto_setup.exp):
#!/usr/bin/expect spawn ./setup.sh # 匹配到目标提示后发送回车 expect "Press Enter to use default:" send "\r" # 若有其他交互,可继续添加expect和send语句 expect eof
给脚本添加执行权限后,在sample.sh中调用:
# 安装依赖及expect sudo apt install -y 你的依赖包名称 expect # 运行自动交互脚本 ./auto_setup.exp
- 方法4:修改
setup.sh脚本(最彻底的方案)
如果有权限修改setup.sh,直接跳过输入步骤、使用默认值即可。比如找到原脚本中提示输入的代码段:
read -p "Press Enter to use default:" user_input # 使用默认值替代空输入 user_input=${user_input:-默认值}
改成直接赋值默认值,彻底消除输入提示:
user_input="默认值"
内容的提问来源于stack exchange,提问作者KBNanda
相关产品推荐
相关产品推荐

