if [[ ! `cat /etc/passwd > /dev/null 2>&1` ]]; then
echo "not working"
fi
I get ‘not working’ in the output.
But running the cat command followed with echo $? returns 0, so I was expecting not to see the output.
>Solution :
To test the exit status, don’t use [[ and `:
if ! cat /etc/passwd > /dev/null 2>&1 ; then
echo "not working"
fi
Backquotes, also called Command Substitution, expand to the output of the command, which is always empty here, because stdout is redirected to /dev/null. [[ ! $string ]] is equivalent to [[ ! -n $string ]] or [[ -z $string ]], i.e. it tests whether $string is empty, which it always is (explained above).