无阻塞地读取可选的标准输入
Reading Optional Standard Input Without Blocking
所以我有一个函数可以选择通过标准输入提供额外的数据,我用 cat
抓取它,但是,当没有标准输入时 cat
将阻止执行.
这是一个愚蠢的例子:
foo() { echo "$@" "$(cat)"; }
基本上它会回应通过参数和标准输入作为输入给出的所有内容。
在这种情况下,有什么办法可以防止 cat
阻塞吗?目前,如果设置了这样做的选项,我只能通过调用 cat
来解决这个问题,但似乎我真正需要的只是 cat
到 return 什么都没有如果没有什么可读的。
foo() {
if [ -t 0 ]
then
echo "$@"
else
echo "$@" "$(cat)"
fi
}