即使在管道中调用,我怎样才能从stdin中获取

时间:2016-05-24 09:54:36

标签: bash

如何在Bash脚本中定义函数bar,以便该脚本中的echo foo | bar将从脚本的stdin读取输入而不是管道?换句话说,如果bar是:

function bar(){
  read ZOO
}

我希望它等待我的输入,而不是将ZOO设置为"foo"

1 个答案:

答案 0 :(得分:4)

管道的想法是将管道左侧进程的 stdout 连接到管道右侧进程的 stdin 。因此foo在这种情况下通过管道输入函数bar()的标准输入。

如果您想从当前的终端明确阅读,请将the special device /dev/tty 传递给read的标准输入:

function bar() {
    read ZOO < /dev/tty
}