我無法讓bash將管道的控制權交給標準輸入。我想將用戶名和密碼傳遞給一個程序,然後從stdin而不是管道讀取相同的程序!這是我曾試過的:bash讀取管道輸入後的標準輸入
alias pandora='echo -e "$(cat ~/.musik/name)\n$(cat ~/.musik/pass | base64 --decode)" | pianobar'
這是在我的.bashrc
。首先,它是貓的用戶名/密碼文件,然後管道到pianobar
(終端中的潘多拉)。用戶名和密碼進入,但是,pianobar期待更多的輸入。 Pianobar要求輸入一個數字(例如,可以播放,例如,電臺),但是當我鍵入並按Enter鍵時,由於某種原因,沒有發生任何事情,因此它並不期望它來自那裏。
如何讓管道「放棄」控制?
注:我也曾嘗試
echo "$(cat ~/.musik/name)
$(cat ~/.musik/pass | base64 --decode)
" >>> pianobar
我會用'貓;回聲;貓| BASE64;貓; } | pianobar'而不是這個來避免不必要的'echo -e'等。 –
^^同意。我也有同樣的意見。我只是希望對OP的腳本進行微小的更改。但編輯也給了這個解決方案。 – anishsane
使用'expect'腳本實際上更確定地以與真實TTY輸入相同的方式工作 - 如果程序在isatty(stdin)的返回值上改變其行爲,則'cat'黑客可能無法工作。 –