GNU/Linux >> Znalost Linux >  >> Linux

Chyba syntaxe poblíž neočekávaného tokenu 'then'

Řešení je docela jednoduché. Stačí dát prostor mezi if a otevírací hranaté závorky, jak je uvedeno níže.

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


Mezi if musí být mezera a [ , takto:

#!/bin/bash
#test file exists

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

Všechny tyto (a jejich kombinace) by byly nesprávné taky:

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

Na druhou stranu jsou všechny v pořádku:

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

Btw tyto jsou ekvivalentní:

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

Tyto jsou také ekvivalentní:

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

A střední část vašeho skriptu by byla lepší s elif takhle:

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

(Také jsem vypustil uvozovky v echo , protože v tomto příkladu jsou zbytečné)


Linux
  1. Chyba Tar:Neočekávané EOF v archivu

  2. Chyba 'Neočekávaný konec souboru' a 'Chyba při importu definice funkce' při spuštění shellscriptu pomocí qsub

  3. Chyba syntaxe:neočekávaný konec souboru (očekává se tedy)

  1. Zpracování chyb ve skriptech Bash

  2. Ověření syntaxe PHP.

  3. Proč se tento příkaz ldapadd ukončí s chybou Neplatná syntaxe?

  1. Chyba:Kontrola šíření DNS Neshoda tokenů [vyřešeno]

  2. Grep -v Neočekávané chování?

  3. Více logických operátorů ((a || B) &&C) a „chyba syntaxe blízko neočekávaného tokenu“?