我无法让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'黑客可能无法工作。 –