if
testa comandos.
if [ ... ]
funciona porque [
é um comando ( /usr/bin/[
ou um construído (geralmente o último)) que espera ]
como seu último argumento (apenas para fazer as coisas parecerem bonitas). Mas além disso, são necessários parâmetros, que precisam ser passados normalmente - como uma lista separada por espaços.
Se você não quiser usar [
, você pode fazer:
if test $i != 10; then
e se comportará exatamente da mesma maneira.
Alternativamente, há [[
em bash , que é uma construção gramatical apropriada que cria um contexto separado, que permite usar coisas como >
ou &&
nele com semântica diferente do que eles significariam em uma chamada de comando usual ( [
e test
são apenas invocações de comando), mas você ainda precisa de espaços em torno de [[
e ]]
.