run a unix shell command if the output doesn't

2019-07-26 16:27发布

I've got a unix command sequence that goes something like:

command1 | command2 | command3 | wc -l

Now that I have the number of lines, I'd like to do something (run a specific command with no inputs) if the number of lines isn't equal to a specific number. My shell scripting is fantastically rusty (perhaps 10 years or more since I've done much Unix work) so I don't know how to add this kind of conditional to a command sequence. Does anyone know?

标签: shell
3条回答
2楼-- · 2019-07-26 16:58

You need to capture the output of your wc command and use if to run another command if it's not equal to the number of lines you want, such as:

count=$(command1 | command2 | command3 | wc -l)
if [[ $count -ne 19 ]] ; then
    command4
fi
查看更多
Anthone
3楼-- · 2019-07-26 16:58
numberOfLines=$(command1 | command2 | command3 | wc -l)
if [ "${numberOfLines}" == "7" ]; then
    echo "Hooray."
fi
查看更多
趁早两清
4楼-- · 2019-07-26 17:04

Kinda ugly .. but this works.

#  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"

nothing's echoed in the second case

查看更多
登录 后发表回答