GNU/Linux >> Linux Esercitazione >  >> Linux

Errore di sintassi vicino al token imprevisto "then"

La soluzione è piuttosto semplice. Basta dare spazio tra if e le parentesi quadre di apertura come indicato di seguito.

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


Ci deve essere uno spazio tra if e [ , in questo modo:

#!/bin/bash
#test file exists

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

Questi (e le loro combinazioni) sarebbero tutti errati troppo:

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

Questi invece vanno tutti bene:

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

A proposito, questi sono equivalenti:

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

Anche questi sono equivalenti:

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

E la parte centrale del tuo script sarebbe stata migliore con un elif come questo:

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

(Ho anche eliminato le virgolette nel echo , poiché in questo esempio non sono necessari)


Linux
  1. Errore:incoerenza imprevista; Eseguire Fsck manualmente?

  2. Errore di sintassi:fine del file imprevista (in attesa di allora)

  3. errore di sintassi vicino al token imprevisto ' - bash

  4. Apparmor:come si fa a "consentire tutto" e poi irrigidirsi?

  5. sudo -i restituisce un errore

Gestione degli errori negli script Bash

Errore:mancata corrispondenza del token di controllo della propagazione DNS [risolto]

Errore Wi-Fi Wpa_supplicant?

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

È stato ricevuto un pacchetto Tls di lunghezza imprevista?

Errore "Fine imprevista del file" e "Errore durante l'importazione della definizione della funzione" durante l'esecuzione di shellscript utilizzando qsub