GNU/Linux >> Tutoriels Linux >  >> Linux

Bash :erreur de syntaxe près du jeton inattendu `} ?

J'ai essayé d'utiliser ceci :

$ if [$a == 1] then { echo 'yes'; } fi;

mais j'obtiens une erreur :

-bash: syntax error near unexpected token `}'

Quel est le bon format ? J'en ai essayé plusieurs sans succès.

Réponse acceptée :

[ est juste un autre caractère, selon bash ; ce n'est pas auto-délimité. Vous devez donc mettre des espaces autour de [ et ] . Bien que vous feriez mieux d'utiliser [[ et ]] .

Et la commande suivant if (oui, [ est une commande) doit se terminer par un ; ou une nouvelle ligne.

Enfin, == (qui n'est pas posix, FWIW ; posix préfère = ) est une égalité de chaîne, pas une égalité numérique.

Donc, vous avez peut-être voulu dire :

if [[ $a -eq 1 ]]; then echo yes; fi

Mais vous pouvez utiliser une évaluation arithmétique à la place :

if ((a == 1)); then echo yes; fi

(Dans l'évaluation arithmétique, l'égalité est == , et vous n'avez pas besoin de $ avant les noms de variables. Je sais que c'est déroutant.)

Pour plus d'informations sur [ :help test . À propos de [[ :aide [[ (qui s'appuie sur test ). À propos de (( :help let . À propos de bash :man bash


Linux
  1. "Erreur de syntaxe près d'un jeton inattendu" après la modification de .bashrc ?

  2. Erreur tar :EOF inattendu dans l'archive

  3. [ :Opérateur inattendu en programmation shell

  4. Bash ignorant l'erreur pour une commande particulière

  5. Erreur de syntaxe :fin de fichier inattendue (en attente alors)

Bash declare Statement :Syntaxe et exemples

Syntaxe de l'instruction bash case et exemples

Dépannage de l'erreur "Bash :Commande introuvable" sous Linux

Syntaxe Bash If Else avec exemples

Comment vérifier la syntaxe d'un script Bash sans l'exécuter ?

erreur de syntaxe près du jeton inattendu ' - bash