bash脚本暂停,同时命令等待标准输入
问题描述:
我有一个返回以下纯文本端点:bash脚本暂停,同时命令等待标准输入
openssl genrsa -out server.key 2048
openssl req -new -sha256 -key server.key -out server.csr
但我跑得像这样经过:
curl -sSf https://.../ | bash -
它要求Country Name (2 letter code) [XX]:
但随后立即运行导致错误的第二个命令并返回到提示符。我如何让它等待用户输入命令1所要求的所有字段,然后运行命令2?
我这样做的原因是因为我正在创建一个从curl调用中读取纯文本并将其管理为bash的服务;一种来自远程资源的自动化脚本。
答
当脚本的内容传入bash
时,stdin连接到管道而不是tty,所以脚本无法从tty读取,实际上不能从stdin中为任何事情挤出任何东西(将总是得到EOF),因为stdin已经被bash
用尽了。它可以通过关闭和重新连接到脚本中标准输入多次耗尽(例如,见this question),但对于任何生成的脚本的内容,你可以随时使用进程替换释放标准输入:
bash <(curl -sSL http://git.io/vlhFL)
+0
谢谢,我需要的确切解决方案。 – brian
会如果以发布方式执行,自动暂停stdin。也许你以这样的方式调用它,stdin不可用于等待? –
对不起,我留下了一些重要的东西。更新问题。 – brian
标准输入在本例中是由bash使用的。告诉我们为什么你以这种扭曲的方式运行脚本。 – 4ae1e1