BASH - 检查未命名管道是否为空

Mec*_*MK1 4 bash pipe

我的问题是,我想要一个从管道读取内容的脚本,检查它是否为空,如果不是则输出它,如下所示:

#!/bin/bash
var=$(cat -)
if [ -n "$var" ]
then
    echo "$var"
else
    echo "Pipe was empty"
fi
Run Code Online (Sandbox Code Playgroud)

问题是,如果管道为空,则 cat 从 stdin 读取。有什么办法可以防止猫这样做吗?或者 cat 是在这里使用的错误工具?

Ign*_*ams 5

read -t 0 -N 0检测数据是否可用标准输入。使用test -t 0tty尝试检测管道是否连接到标准输入。