私はAmazon Linuxでbashシェルを使用しています。以下のコードブロックを実行すると、 "予期しないトークン` else 'の構文エラーが発生します。このif-then-elseブロックを正しく書くには、私は何をする必要がありますか?シェルスクリプトの "予期しないトークン` else 'の近くで構文エラーが発生する
答えて
(関連するPOSIX仕様にかなり近いです)bashでhelp if
から構文定義を引用すると:
if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else COMMANDS; ] fi
if
声明、との条件付きの一部に使用される複数のコマンドがある場合もありますコマンドセパレータ(ここではセミコロンで表されます)は、条件付き部分が正常な状態を返す場合は、最後のコマンドと指定されるコマンドのリストの間には必ずとなります。その構文の定義に対して指定されたコードを比較
、このようなセパレータ欠けている:それは、then
構文として解析されない、[
コマンド引数として渡されているように
if [ $rc -eq 0 ]; then
# ^
# \- this semicolon, or a newline, is mandatory before "then"
を。
(bash
とタグ付けされているため、ネイティブ演算構文も使用してください:if ((rc == 0)); then
は読みやすくバグが少ないです)。
変数をどこにでも使用する場合は、二重引用符も使用する必要があります。 '$ rc'が空または設定されていないと、構文エラーが発生します:' if [-eq 0]; –
@VrataBlazek、当然ですが、私はここでOPから厳密にコピー/ペーストしていますが、そのデモンストレーション中に他の点でコードを修正すると、最も直接的な問題についての説明が不明確になります。 –
@VrataBlazek、...これは私がhttp://shellcheck.net/を提案した理由で、バグを以前に質問したコメントに報告します。 –
- 1. 予期しないトークンの近くで構文エラーが発生しました
- 2. 予期しないトークン `AX_VALGRIND_CHECK 'の近くで構文エラーが発生する
- 3. 予期しないトークン `do 'の近くで構文エラーが発生する
- 4. 予期しないトークンの近くに構文エラー「し、」
- 5. 予期しないトークンの近くに構文エラー `(」
- 6. 予期しないトークンの近くのPython構文エラー
- 7. Bash if-else:予期しないトークン `else 'の構文エラー
- 8. bash:Pythonで予期しないトークン `newline 'の近くで構文エラーが発生しましたNumber game
- 9. トークンの近くで予期しないエラーが発生しました
- 10. 予期しないトークン `date =` echo $ 1 | cut -d "の近くで構文エラーが発生しました。 -f1-3` '
- 11. Unixシェル - 予期しないトークンの近くで構文エラーが発生しました
- 12. -bash:予期しないトークンに近い構文エラー `) '
- 13. 予期しないトークン `newline 'の近くで構文エラーが発生しました(XAlignのインストール時)
- 14. whileループエラー:予期しないトークン `done 'の近くで構文エラーが発生しました
- 15. Bashスクリプトエラー:167行目:予期しないトークンの近くで構文エラーが発生しました。 '
- 16. "予期しないトークン` do 'の近くで構文エラーが発生しました。
- 17. bashの:構文の予期しないトークンの近くにエラーが `(」 - PIG、CentOSの
- 18. ケース内の予期しないトークンに近い構文エラー
- 19. 予期しないトークン「GTK」の近くに構文エラーがあります
- 20. ノードJS(-bash:予期しないトークン ` "Hello World" の「近くに構文エラー)が
- 21. bashの?:予期しないトークンの近くに構文エラー `(」 - Pythonの
- 22. 予期しない構文エラー予期しないトークン{JSONで
- 23. 構文エラー: `( '予期しないシェルスクリプト
- 24. バックアップbashスクリプトでエラーが発生しました:予期しないトークン `newline 'の近くで構文エラーが発生しました
- 25. pythonファイルの実行中に予期しないトークンの近くで文法エラーが発生しました
- 26. Phalcon - 構文エラー、予期しないトークンAS、 'a、UNSIGNEDの近く)AS intHours
- 27. 構文エラー:予期しないトークン「 - 」
- 28. Node.js構文エラー "予期しないトークン"
- 29. 構文エラー:予期しないトークン "
- 30. jQuery構文エラー - 予期しないトークン
BTW、http://shellcheck.net/は、この問題と他の問題の両方を自動的に検出します。 –
さらに、 'fooのようなことをしているのならば、 rc = $?; if [$ rc -eq 0];あなたが '$ rc'を必要としている場合を除いて、そうしないでください。代わりに 'if foo;を実行してください。その後、終了ステータスを取得する必要はありません。 –