Laravel 特使和 bash 提示

Laravel Envoy and bash prompt

我正在使用 Envoy 来配置远程服务器。通过从私人仓库中提取 bash 脚本然后执行它来完成供应。

bash 脚本要求一些确认,如 yes/no(使用 bash "read -p"):当我连接到远程服务器时,它按预期工作。 . 脚本等待用户输入。

相反,Envoy 似乎忽略了任何提示。这是预期的行为吗?

任何解决方法?

是的,这是预期的。 read 没有可读的内容,所以它没有。

你有几个选择。

  1. 重写脚本以在没有终端提示时使用配置文件。

    使用 [ -t 0 ] 之类的东西来测试标准输入是否是终端并加载具有默认值的配置文件。最简单的方法就是拥有一个包含适当变量赋值的文件,然后将其作为 . defaults.sh 或其他任何来源。如果您首先获取默认值,您甚至不需要 -t 测试,因为那时用户输入的任何内容都会覆盖默认值。

  2. 重写您的脚本以获得合理的默认值。

  3. 重写运行脚本的任何内容,以通过重定向(例如 printf 'answer 1\nanswer 2\n' | ./script.sh./script.sh <answerfile)通过 pipeline/file 提供脚本输入。