GNU/Linux >> Linux の 問題 >  >> Linux

予期しないトークン「then」付近の構文エラー

解決策は非常に簡単です。以下に示すように、if と開き角括弧の間にスペースを空けるだけです。

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


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

一方、これらはすべて問題ありません:

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

ところで、これらは同等です:

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 の引用符も削除しました 、この例では不要です)


Linux
  1. Grep -v予期しない動作?

  2. 複数の論理演算子、((a || B)&&C)、および「予期しないトークンの近くの構文エラー」?

  3. WifiエラーWpa_supplicant?

  1. Bash:予期しないトークン `}’の近くの構文エラー?

  2. qsubを使用してシェルスクリプトを実行すると、「予期しないファイルの終わり」および「関数定義のインポートエラー」エラーが発生する

  3. 構文エラー:ファイルの終わりが予期されていません (その時が予想されます)

  1. Bashスクリプトでのエラー処理

  2. PHP構文の検証。

  3. sudo -i はエラーを返します