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

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

これを使ってみました:

$ if [$a == 1] then { echo 'yes'; } fi;

しかし、エラーが発生します:

-bash: syntax error near unexpected token `}'

正しい形式は何ですか?運が悪かったのでいくつか試しました。

承認された回答:

[ bashによると、これは単なる別の文字です。自己区切りではありません。したがって、[の前後にスペースを入れる必要があります および] [[ および]]

そして、 ifに続くコマンド (はい、 [ はコマンドです);で終了する必要があります または改行。

最後に、 == (これはposix、FWIWではありません。posixは =を優先します )は文字列の同等性であり、数値の同等性ではありません。

つまり、次のことを意味している可能性があります:

if [[ $a -eq 1 ]]; then echo yes; fi

ただし、代わりに算術評価を使用することもできます:

if ((a == 1)); then echo yes; fi

(算術評価では、等式は ==です。 、 $は必要ありません 変数名の前。紛らわしいと思います。)

[の詳細については : help test [[について :ヘルプ [[ (これは testに基づいています )。 (( help let bashについて : man bash


Linux
  1. タイプセット-aスクリプトにエラーがありますか?

  2. .bashrcを編集した後の「予期しないトークンの近くの構文エラー」?

  3. tar エラー:アーカイブに予期しない EOF があります

  1. [ :シェル プログラミングの予期しない演算子

  2. 特定のコマンドの Bash 無視エラー

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

  1. 例でBashエラー処理を学ぶ

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

  3. Bash スクリプトでエラーを発生させる