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的服务;一种来自远程资源的自动化脚本。

+0

会如果以发布方式执行,自动暂停stdin。也许你以这样的方式调用它,stdin不可用于等待? –

+0

对不起,我留下了一些重要的东西。更新问题。 – brian

+0

标准输入在本例中是由bash使用的。告诉我们为什么你以这种扭曲的方式运行脚本。 – 4ae1e1

当脚本的内容传入bash时,stdin连接到管道而不是tty,所以脚本无法从tty读取,实际上不能从stdin中为任何事情挤出任何东西(将总是得到EOF),因为stdin已经被bash用尽了。它可以通过关闭和重新连接到脚本中标准输入多次耗尽(例如,见this question),但对于任何生成的脚本的内容,你可以随时使用进程替换释放标准输入:

bash <(curl -sSL http://git.io/vlhFL) 
+0

谢谢,我需要的确切解决方案。 – brian