GNU/Linux >> Linux Esercitazione >  >> Linux

Bash:errore di sintassi vicino a token imprevisto `}'?

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


Linux
  1. Digitare -a sta dando un errore nello script?

  2. Operatori logici multipli, ((a || B) &&C) e "Errore di sintassi vicino a token imprevisto"?

  3. Errore script Bash:è prevista un'espressione intera?

  4. Errore tar:EOF imprevisto nell'archivio

  5. [ :Operatore imprevisto nella programmazione della shell

Dichiarazione Bash:sintassi ed esempi

Sintassi ed esempi dell'istruzione Bash case

Risoluzione dei problemi di errore "Bash:comando non trovato" in Linux

Bash If Else Sintassi con esempi

Come posso controllare la sintassi di uno script Bash senza eseguirlo?

errore di sintassi vicino al token imprevisto ' - bash