Recomendamos altamente
Você deve ler esta resposta maravilhosa para obter mais detalhes.
A configuração IFS contains digit pode quebrar seu código:
$ IFS=0
$ echo test
$ [ $? -eq 0 ] && echo done
bash: [: : integer expression expected
Alguns shells podem herdar IFS do ambiente ( dash , ash ), outros não ( bash , zsh , ksh ). Mas alguém pode controlar o ambiente, seu script será interrompido de qualquer maneira ( $# , $! também são afetados).
Uma observação, no seu exemplo, você usou o novo teste [[...]] , então a divisão do campo está desativada, não é necessário citar neste caso. Será importante se você usar o teste antigo [...] .
$ IFS=0
$ echo test
$ [[ $? -eq 0 ]] && echo done
done