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