我的问题是,我想要一个从管道读取内容的脚本,检查它是否为空,如果不是,则输出它,如下所示:
#!/bin/bash
var=$(cat -)
if [ -n "$var" ]
then
echo "$var"
else
echo "Pipe was empty"
fi
问题是,如果管道为空,cat 会从 stdin 读取数据。有什么方法可以阻止 cat 这样做吗?或者 cat 不是这里合适的工具?
答案1
用于read -t 0 -N 0
检测 stdin 上是否有数据。使用test -t 0
或tty
尝试检测管道是否已连接到 stdin。