命令等待stdin时Bash脚本暂停

命令等待stdin时Bash脚本暂停,bash,Bash,我有一个端点,它返回以下纯文本: openssl genrsa -out server.key 2048 openssl req -new -sha256 -key server.key -out server.csr 但在我这样运行之后: curl -sSf https://.../ | bash - 它询问国家名称(两个字母代码)[XX]:,但随后立即运行第二个命令,导致错误并返回提示。如何让它等待用户输入命令1要求的所有字段,然后运行命令2 我这样做的原因是因为我创建了一个服务,从cu

我有一个端点,它返回以下纯文本:

openssl genrsa -out server.key 2048
openssl req -new -sha256 -key server.key -out server.csr
但在我这样运行之后:

curl -sSf https://.../ | bash -
它询问
国家名称(两个字母代码)[XX]:
,但随后立即运行第二个命令,导致错误并返回提示。如何让它等待用户输入命令1要求的所有字段,然后运行命令2


我这样做的原因是因为我创建了一个服务,从curl调用读取纯文本并将其传输到bash;一种来自远程资源的自动脚本。

当脚本内容通过管道传输到
bash
时,stdin连接到管道而不是tty,因此脚本无法从tty读取,实际上无法从stdin中提取任何内容(将始终获得EOF),因为stdin已经被
bash
耗尽了。通过关闭并重新连接脚本(例如,请参阅),可以在脚本中多次耗尽stdin,但对于任何生成的脚本内容,始终可以使用进程替换释放stdin:

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

bash当脚本的内容通过管道传输到
bash
中时,stdin连接到管道而不是tty,因此脚本无法从tty中读取,实际上无法从stdin中提取任何内容(将始终获得EOF),因为stdin已被
bash
耗尽。通过关闭并重新连接脚本(例如,请参阅),可以在脚本中多次耗尽stdin,但对于任何生成的脚本内容,始终可以使用进程替换释放stdin:

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

bash如果按posted执行,它将自动暂停stdin。也许你这样称呼它,以致于stdin不能被等待?对不起,我遗漏了一些重要的东西。在本例中,更新question.stdin由bash使用。告诉我们为什么要以这种扭曲的方式运行脚本。我实际上像
curl-sSf一样运行它https://.../ |bash-
因为这是我为运行自动脚本而创建的内部服务。使用流程替换
bash,如果按发布方式执行,它将自动暂停stdin。也许你这样称呼它,以致于stdin不能被等待?对不起,我遗漏了一些重要的东西。在本例中,更新question.stdin由bash使用。告诉我们为什么要以这种扭曲的方式运行脚本。我实际上像
curl-sSf一样运行它https://.../ |bash-
因为这是我为运行自动化脚本而创建的内部服务。使用流程替换
bash谢谢,我需要的确切解决方案。谢谢,我需要的确切解决方案。