Bash 在本地执行远程shell脚本时忽略提示

Bash 在本地执行远程shell脚本时忽略提示,bash,shell,sh,wget,Bash,Shell,Sh,Wget,我在网上的某个地方提供了shell脚本,我想获取它并在本地执行。通常我会这样做:wget-qO-remote_script.sh | sh 这很好,但是当脚本中有一个提示符read-p“prompt”yn时,它会被忽略 最简单和最短的解决方案是什么?您需要避免将shell的stdin用于读取命令。试试这个: sh <(wget -q0- remote_script.sh) sh发生这种情况可能是因为您正在将脚本的内容传送到sh,这是在shell中分别行发送每个命令。如果您的脚本是: #!

我在网上的某个地方提供了shell脚本,我想获取它并在本地执行。通常我会这样做:
wget-qO-remote_script.sh | sh

这很好,但是当脚本中有一个提示符
read-p“prompt”yn
时,它会被忽略


最简单和最短的解决方案是什么?

您需要避免将shell的stdin用于读取命令。试试这个:

sh <(wget -q0- remote_script.sh)

sh发生这种情况可能是因为您正在将脚本的内容传送到
sh
,这是在shell中分别行发送每个命令。如果您的脚本是: #!/bin/bash 阅读-p“提示:”yn echo$yn

这就是正在执行的内容: $read-p“提示:”yn 提示:echo$yn $

您应该做的是保存脚本,然后按如下方式运行它:
$wget-q-O myscript.sh remote_script.sh&&sh myscript.sh

Aha,这就是我所想的,在文件内容中进行管道传输时,sh的stdin可能不可用。我还找到了另一个解决方案:
sh-c“`wget-qO-remote_script.sh`”
哪一个更好?@Roman使用
$()
而不是
`
可能比
@Roman更好,我实际上建议接受这个答案,因为这个概念类似,而且您也分享了自己的其他答案。我给了我的+1。