GNU/Linux >> Tutoriels Linux >  >> Linux

Erreur de syntaxe près du jeton inattendu 'then'

La solution est assez simple. Il suffit de laisser un espace entre if et les accolades ouvrantes comme indiqué ci-dessous.

if [ -f "$File" ]; then <code> fi


Il doit y avoir un espace entre if et [ , comme ceci :

#!/bin/bash
#test file exists

FILE="1"
if [ -e "$FILE" ]; then
  if [ -f "$FILE" ]; then
     echo :"$FILE is a regular file"
  fi
...

Ceux-ci (et leurs combinaisons) seraient tous incorrects aussi :

if [-e "$FILE" ]; then
if [ -e"$FILE" ]; then
if [ -e "$FILE"]; then

Celles-ci, par contre, sont toutes correctes :

if [ -e "$FILE" ];then  # no spaces around ;
if     [    -e   "$FILE"    ]   ;   then  # 1 or more spaces are ok

Au fait, ceux-ci sont équivalents :

if [ -e "$FILE" ]; then
if test -e "$FILE"; then

Ceux-ci sont également équivalents :

if [ -e "$FILE" ]; then echo exists; fi
[ -e "$FILE" ] && echo exists
test -e "$FILE" && echo exists

Et, la partie centrale de votre script aurait été meilleure avec un elif comme ceci :

if [ -f "$FILE" ]; then
    echo $FILE is a regular file
elif [ -d "$FILE" ]; then
    echo $FILE is a directory
fi

(J'ai également supprimé les guillemets dans le echo , car dans cet exemple, ils sont inutiles)


Linux
  1. Gestion des erreurs dans les scripts Bash

  2. Vérification de la syntaxe PHP.

  3. Erreur tar :EOF inattendu dans l'archive

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

  5. Pourquoi cette commande ldapadd se termine-t-elle avec une erreur de syntaxe non valide ?

Un paquet Tls d'une longueur inattendue a été reçu ?

Qu'est-ce que :-!! en code C ?

Erreur "Fin de fichier inattendue" et "Erreur lors de l'importation de la définition de la fonction" lors de l'exécution du shellscript à l'aide de qsub

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

Apparmor - comment 'tout autoriser' règle, puis resserrer?

sudo -i renvoie une erreur