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