GNU/Linux >> Belajar Linux >  >> Linux

Kesalahan sintaksis di dekat token tak terduga 'lalu'

Solusinya cukup sederhana. Beri jarak antara if dan kurung siku buka seperti di bawah ini.

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


Harus ada spasi di antara if dan [ , seperti ini:

#!/bin/bash
#test file exists

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

Ini (dan kombinasinya) semuanya akan salah juga:

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

Ini di sisi lain semuanya baik-baik saja:

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

Btw ini setara:

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

Ini juga setara:

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

Dan, bagian tengah skrip Anda akan lebih baik dengan elif seperti ini:

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

(Saya juga menghilangkan tanda kutip di echo , seperti dalam contoh ini mereka tidak diperlukan)


Linux
  1. Memperbaiki 'Kesalahan Manipulasi Token Otentikasi' di Ubuntu Linux

  2. Kesalahan tar:EOF tak terduga dalam arsip

  3. Kesalahan 'Akhir file tak terduga' dan 'kesalahan mengimpor definisi fungsi' menjalankan skrip shell menggunakan qsub

  1. Memverifikasi sintaks PHP.

  2. Kesalahan sintaks:akhir file tidak terduga (mengharapkan saat itu)

  3. Mengapa perintah ldapadd ini berhenti dengan kesalahan sintaks tidak valid?

  1. Kesalahan:Propagasi DNS memeriksa Token Mismatch [Terpecahkan]

  2. Grep -v Perilaku Tak Terduga?

  3. Beberapa Operator Logika, ((a || B) &&C), Dan “Kesalahan sintaksis Dekat Token Tak Terduga”?