Bash 在本地执行远程shell脚本时忽略提示
我在网上的某个地方提供了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中分别行发送每个命令。如果您的脚本是: #!
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.shAha,这就是我所想的,在文件内容中进行管道传输时,sh的stdin可能不可用。我还找到了另一个解决方案:sh-c“`wget-qO-remote_script.sh`”
哪一个更好?@Roman使用$()
而不是`
可能比@Roman更好,我实际上建议接受这个答案,因为这个概念类似,而且您也分享了自己的其他答案。我给了我的+1。