我正在使用 Envoy 来配置远程服务器。配置是通过从私有(private)存储库中提取 bash 脚本然后执行它来完成的。
bash 脚本询问一些确认,例如是/否(使用 bash“read -p”):当我连接到远程服务器时,它按预期工作...脚本等待用户输入。
相反,Envoy 似乎忽略了任何提示。这是预期的行为吗?
有什么解决办法吗?
最佳答案
是的,这是预期的。 read
没有任何内容读取所以它不会。
您有几个选择。
重写脚本以在没有终端提示时使用配置文件。
使用类似
[ -t 0 ]
的内容测试标准输入是否是终端并加载默认的配置文件。最简单的方法就是拥有一个包含适当变量分配的文件,然后将其来源. defaults.sh
管他呢。你甚至不需要-t
测试是否首先获取默认值,然后用户输入的任何内容都会覆盖默认值。重写您的脚本以具有合理的默认值。
重写运行脚本的任何内容,以通过重定向通过管道/文件提供脚本输入(例如
printf 'answer 1\nanswer 2\n' | ./script.sh
或./script.sh <answerfile
)。
关于bash - Laravel Envoy 和 bash 提示符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33522154/