2012-11-30 46 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