如果输出没有特定行数,则运行unix shell命令

时间:2009-08-25 14:51:34

标签: shell

我有一个unix命令序列,类似于:

command1 | command2 | command3 | wc -l

现在我有行数,如果行数不等于特定数字,我想做某事(运行没有输入的特定命令)。我的shell脚本非常生疏(可能是因为我做了很多Unix工作已经10年或更长时间)所以我不知道如何在命令序列中添加这种条件。有谁知道吗?

3 个答案:

答案 0 :(得分:5)

您需要捕获wc命令的输出,并使用if运行另一个命令,如果它不等于您想要的行数,例如:

count=$(command1 | command2 | command3 | wc -l)
if [[ $count -ne 19 ]] ; then
    command4
fi

答案 1 :(得分:3)

numberOfLines=$(command1 | command2 | command3 | wc -l)
if [ "${numberOfLines}" == "7" ]; then
    echo "Hooray."
fi

答案 2 :(得分:2)

有点难看..但这很有效。

#  test $(seq 10 | wc -l) -eq 10 && echo "there's 10"
there's 10
#  test $(seq 11 | wc -l) -eq 10 && echo "there's 10"

第二种情况下没有echo