1. ホーム
  2. linux

[解決済み] 予期しないトークン 'then' 付近の構文エラー

2022-02-19 01:32:19

質問

と同じようにコードを入力しました。 Linuxのコマンドライン。完全入門 369ページ が、エラーを表示します。

line 7 `if[ -e "$FILE" ]; then`

のようなコードになります。

#!/bin/bash
#test file exists

FILE="1"
if[ -e "$FILE" ]; then
  if[ -f "$FILE" ]; then
     echo :"$FILE is a regular file"
  fi
  if[ -d "$FILE" ]; then
     echo "$FILE is a directory"
  fi
else 
   echo "$FILE does not exit"
   exit 1
fi
   exit

エラーの原因を突き止めたいのですが。どのようにコードを修正すればよいのでしょうか?私のシステムはUbuntuです。

解決方法を教えてください。

の間にスペースが必要です。 if[ のようなものです。

#!/bin/bash
#test file exists

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

これら(およびその組み合わせ)は、すべて 不正解 もあります。

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

一方、これらはすべてOKです。

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

Btw これらは等価です。

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

これらも同等です。

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

また、スクリプトの中間部には elif このように

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

(の引用符も削除しています)。 echo この例では不要です。)