如何在Bash脚本中为交互式程序postprocessor传入指定输入?
解决交互式程序自动输入的方案
管道传递输入
直接通过管道将目标文件名传入程序,适用于单输入场景:
echo "MyFileName" | ~/Executables/postprocessor
Here String 语法
Bash内置的Here String语法,写法更简洁直观:
~/Executables/postprocessor <<< "MyFileName"
Here Document(多输入场景)
如果后续程序还有更多交互式输入需求,用Here Document可以批量传入:
~/Executables/postprocessor << EOF MyFileName # 若有其他输入,在此换行添加即可 EOF
Expect 工具(复杂交互)
如果程序需要等待特定提示后再输入(比如有明确的"Enter MyFileName:"提示),可以用expect工具(需提前安装):
expect << 'EOF' spawn ~/Executables/postprocessor expect "Enter MyFileName:" # 替换为程序实际的提示文本 send "MyFileName\r" expect eof EOF
补充说明
- 前三种方法的核心是将输入内容通过标准输入传给程序,不需要程序支持命令行参数,适配大多数交互式程序
- 如果程序原本设计支持命令行参数但未生效,需检查程序的参数解析逻辑或查看其文档
内容的提问来源于stack exchange,提问作者Mr.Grasses
相关产品推荐
相关产品推荐

