让我们说我想要这样的东西
echo a | b | c | d
echo e
只有当第一个回音(echo e
)有任何输出时,我才需要echo a | b | c | d
。
怎么做?
答案 0 :(得分:3)
有时候将整个结果保存在var中是不合适的(因为它太大,或者因为你想要" live"输出)。在这种情况下,也许你可以尝试一个聪明的"改为使用tee
:
echo a | b | c | d | tee >([ `wc -l` -gt 0 ] && echo e)
而不是"计算行",你可能更喜欢"计算字符" (在输出中不会斩断不包含换行符:
echo a | b | c | d | tee >([ `wc -c` -gt 0 ] && echo e)
如果单个"空行"由行尾字符终止必须被视为"空"输出,你应该检查输出大于1。
答案 1 :(得分:2)
你不能在管道结果上使用if语句,检查输出是否为空?
if [[ $(a | b | c | d) != "" ]] ; then
通过这种方式,您可以将a | b | c | d
的输出捕获到字符串中并检查它是否为空,如果没有,则可以继续执行下一个命令e(或实际echo e
)