如何在Bash脚本中定义函数bar
,以便该脚本中的echo foo | bar
将从脚本的stdin读取输入而不是管道?换句话说,如果bar
是:
function bar(){
read ZOO
}
我希望它等待我的输入,而不是将ZOO
设置为"foo"
答案 0 :(得分:4)
管道的想法是将管道左侧进程的 stdout 连接到管道右侧进程的 stdin 。因此foo
在这种情况下通过管道输入函数bar()
的标准输入。
如果您想从当前的终端明确阅读,请将the special device /dev/tty
传递给read
的标准输入:
function bar() {
read ZOO < /dev/tty
}