bash - Laravel Envoy 和 bash 提示符

标签 bash laravel laravel-envoy

我正在使用 Envoy 来配置远程服务器。配置是通过从私有(private)存储库中提取 bash 脚本然后执行它来完成的。

bash 脚本询问一些确认,例如是/否(使用 bash“read -p”):当我连接到远程服务器时,它按预期工作...脚本等待用户输入。

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

有什么解决办法吗?

最佳答案

是的,这是预期的。 read 没有任何内容读取所以它不会。

您有几个选择。

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

    使用类似 [ -t 0 ] 的内容测试标准输入是否是终端并加载默认的配置文件。最简单的方法就是拥有一个包含适当变量分配的文件,然后将其来源 . defaults.sh管他呢。你甚至不需要-t测试是否首先获取默认值,然后用户输入的任何内容都会覆盖默认值。

  2. 重写您的脚本以具有合理的默认值。

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

关于bash - Laravel Envoy 和 bash 提示符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33522154/

相关文章:

bash - 使用监控工具检测系统重新启动/关闭以避免误报

linux - 在 Bash 脚本中更改目录

Envoy 验证失败

php - 带有特使错误的 Laravel 5.1 部署

python - 如何从 bash shell 提示符运行带有句子作为命令行参数的 python 程序

linux - 调用脚本文件时如何提示建议

php - Laravel 仅在数据库表中存储数组的最后一个元素(foreach 循环)

php - 拉维尔 4 : Nest view inside layout with data

laravel - 自定义登录 laravel 5.5

Laravel Envoy 设置任务未成功完成