O caractere [
no seu teste if
significa que você disse ao shell para fazer o tipo de avaliação documentada em man test
Pode não corresponder exatamente à página do manual porque [
está embutido na maioria dos shells e ksh
, bash
, zsh
etc pode implementar uma funcionalidade ligeiramente diferente.
No entanto, uma coisa que isso não faz é executar um comando external e testar os resultados.
Então, podemos fazer isso de outra maneira
por exemplo, podemos testar para ver se a saída do comando cmp
não está em branco:
if [ -n "$(cmp $IPPATH/ip.old $IPPATH/ip.new)" ]
then
echo different
else
echo same
fi
Ou podemos chamar cmp
e testar o código de retorno, que está mais próximo de sua intenção original, sem o [...]
wrapping:
if ! cmp $IPPATH/ip.old $IPPATH/ip.new > /dev/null 2>&1
then
echo different
else
echo same
fi