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?
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 echo
ed in the second case
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
numberOfLines=$(command1 | command2 | command3 | wc -l)
if [ "${numberOfLines}" == "7" ]; then
echo "Hooray."
fi