Ho provato a usare questo:
$ if [$a == 1] then { echo 'yes'; } fi;
ma ricevo un errore:
-bash: syntax error near unexpected token `}'
Qual è il formato corretto? Ne ho provati diversi senza fortuna.
Risposta accettata:
[ è solo un altro personaggio, secondo bash; non è auto-delimitante. Quindi devi mettere degli spazi intorno a [ e ] . Anche se faresti meglio a usare [[ e ]] .
E il comando che segue if (sì, [ è un comando) deve essere terminato con un ; o una nuova riga.
Infine, == (che non è posix, FWIW; posix preferisce = ) è l'uguaglianza di stringhe, non l'uguaglianza numerica.
Quindi potresti aver voluto dire:
if [[ $a -eq 1 ]]; then echo yes; fi
Ma potresti invece usare la valutazione aritmetica:
if ((a == 1)); then echo yes; fi
(Nella valutazione aritmetica, l'uguaglianza è == e non hai bisogno di $ prima dei nomi delle variabili. So che è fonte di confusione.)
Per ulteriori informazioni su [ :help test . Informazioni su [[ :aiuto [[ (che si basa su test ). Informazioni su (( :help let . Informazioni su bash :man bash