2013-05-31 73 views
5

我正在爲github項目構建引導程序,並希望它成爲一個簡單的單行程。該腳本需要密碼輸入。從捲曲管道運行時,正在跳過bash讀取

這工作和停止腳本等待輸入:

curl -s https://raw.github.com/willfarrell/.vhosts/master/setup.sh -o setup.sh 
bash setup.sh 

這不,剛跳過輸入請求:

curl -s https://raw.github.com/willfarrell/.vhosts/master/setup.sh | bash 

setup.sh包含的代碼是一樣的東西:

# code before 
read -p "Password:" -s password 
# code after 

是否可以有一個乾淨的單線?如果是這樣,一個人怎麼辦?

解決方法:

使用三個命令,而不是管道輸出。

curl -s https://raw.github.com/willfarrell/.vhosts/master/setup.sh -o vhosts.sh && bash vhosts.sh && rm vhosts.sh

回答

4

與管道,該read從標準輸入(管道)讀取,但外殼已經閱讀所有的標準輸入,所以沒有任何的read閱讀。

+0

在使用管道時是否有解決方法來捕獲用戶輸入? –

+0

如果你確定那裏有人,請閱讀'/ dev/tty'? –

+0

我會研究一下。謝謝。 –