2012-11-30 43 views
2

我是Bash脚本编写新手,所以请保持温柔。当从SSH shell执行时,Bash脚本“读取”不会暂停用户输入

我通过SSH(PuTTY)连接到Ubuntu服务器,当我运行此命令时,我期望bash脚本下载并执行以允许用户输入,然后回显该输入。它似乎只是写出输入请求的回显标签并终止。

wget -O - https://raw.github.com/aaronhancock/pub/master/bash/readtest.sh | bash

任何线索我可能做错了什么?

UPDATE:这个bash命令不正是我想要的

庆典<(wget的-q -O - https://raw.github.com/aaronhancock/pub/master/bash/readtest.sh

+0

没有必要更新与_answer_的内容_question_。无论如何,接受的答案都是可见的。 –

+0

我的更新与下面接受的答案略有不同,所以我想我会分享。 –

回答

1

乔纳森:

请注意,您有同样的问题,如果你保存脚本到本地文件和管道它来砸bash采取它从标准输入管道。 因此,如果您想交互输入某些内容,则无法将脚本传送到bash。但是你可以使用bash进程替换功能(假设你的登录shell是bash):

bash <(wget -O - https://raw.github.com/aaronhancock/pub/master/bash/readtest.sh) 
+0

谢谢bmk,工作。 –

+0

或者只是wget到一个文件并_then_执行。我会说,不需要火箭科学。 –

0

猛砸正在从标准输入管道,而不是从终端。所以你不能将脚本管道打到bash,仍然使用“读取”命令进行用户输入。已经提到

less readtest.sh | bash 
+0

Jonathan,有没有办法通过SSH从bash脚本获取用户输入呢? –

0

我发现这也适用,有助于保持数据在当前范围内。

EVAL“wget -q -O - https://raw.github.com/aaronhancock/pub/master/bash/readtest.sh