如何根据前一个echo的结果回显一个语句

时间:2014-07-11 06:29:57

标签: shell

让我们说我想要这样的东西

echo a | b | c | d
echo e

只有当第一个回音(echo e)有任何输出时,我才需要echo a | b | c | d

怎么做?

2 个答案:

答案 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