我在 bash 脚本中输入了一行,并想在将它提供给程序之前检查管道是否有数据。
搜索我找到了,test -t 0
但在这里不起作用。总是返回假。那么如何确定管道有数据呢?
例子:
echo "string" | [ -t 0 ] && echo "empty" || echo "fill"
Run Code Online (Sandbox Code Playgroud)
输出: fill
echo "string" | tail -n+2 | [ -t 0 ] && echo "empty" || echo "fill"
Run Code Online (Sandbox Code Playgroud)
输出: fill
与测试上述管道是否产生输出的标准/规范方式不同?需要保留输入以将其传递给程序。这概括了如何将输出从一个进程传送到另一个进程,但仅在第一个进程有输出时才执行?专注于发送电子邮件。