ウェブサイト検索

Bashの構文エラーの修正方法 - 予期しないファイルの終わり


Bash スクリプトでは、構文ミスやコード内のキーワードの欠落などの構造的な問題によって、予期しないファイルの終わりのエラーが発生します。例えば、for ループや while ループを適切な構造で終了するのを忘れた場合、そのようなエラーに直面することがあります。同様に、引用符(“)、括弧、または if 条件(fi)を閉じるのを忘れた場合も、予期しないファイルの終わりのエラーが発生します。

ほとんどのLinuxテキストエディタはBashスクリプトの構文ハイライトを提供しています。そのようなエラーは、構文ハイライトをサポートしていないエディタでスクリプトを作成したときに通常発生します。

このガイドでは、LinuxでBashの予期しないファイルの終わりエラーを修正する方法を説明します。

Bashの予期しないファイルの終わりエラーの理由

bash構文エラー - 予期しないファイルの終わりを修正する方法

  • 1. ループ構造を修正する
  • 2. 条件文の構文を修正する
  • 3. ネストされた条件文の構文を修正する
  • 4. 欠落した引用を修正する
  • 5. 足りない括弧を修正する
  • 6. 不正な関数呼び出しを修正する

結論

要件

システム任意のLinuxディストリビューション
ソフトウェアバッシュシェル

注:デモ用として、私はUbuntu 22.04を使用していますが、コマンドは他のDebianまたはUbuntuベースのディストリビューションにも適用可能です。

Bashの予期しないファイルの終わりエラーの理由

Bashでの予期しないファイル終了エラーの主な理由は次のとおりです:

  • 不正なループ構造
  • 不正確な条件文
  • 不正な入れ子条件文
  • 引用符が欠落しています
  • 欠落している括弧
  • 不正な関数呼び出し

bash構文エラー - 予期しないファイルの終わりを修正する方法

次の解決策は、Bashスクリプト内のファイルの終わりエラーを修正するのに役立ちます:

  1. ループ構造を修正する
  2. 条件文の構文を修正してください
  3. ネストされた条件文の構文を修正してください
  4. 欠落した引用符を修正する
  5. 欠落している括弧を修正する
  6. 関数呼び出しを修正する

各シナリオについて話し合いましょう。

注意:以下のBashスクリプトの例は、デモ目的でファイルの終わりに関するエラーを発生させることを意図しています。

1. ループ構造を修正する

ここに、私が実行しようとしているBashスクリプトがあります。

コードを実行すると、予期しないファイルの終わりエラーが発生します。

理由は、for ループ構造が不正であり、最後に done キーワードが欠けていることです。

修理する

ファイルの予期しない終わりのエラーは、forループ構造の最後にdoneキーワードを追加することで修正できます。

スクリプトはエラーなく実行されます:

2. 条件文の構文を修正する

条件文が誤って記述されていると、予期しないファイルの終わりエラーに遭遇することもあります。

たとえば、次のコードは、fiという終了ifステートメントタグが欠けています。

スクリプトを実行するとエラーが発生します。

修理する

これを修正するには、単純にif文の最後にfiを追加します。

スクリプトを実行してください。エラーは解消されます。

3. ネストされた条件文の構文を修正する

このようなエラーの一般的な理由の1つは、Bashスクリプトの構文を他のプログラミング言語と混同することです。ほとんどのプログラミング言語およびスクリプト言語では、else ifはそのまま書かれますが、Bashスクリプトではキーワードelifが使用されます。例を通じて理解してみましょう:

上記のコードは予期しないファイルの終わりエラーを与えます。

Bashスクリプトではelse if構文は使用されず、代わりにelifが使用されます。

修理する

エラーを修正するには、else ifをelifに置き換えてください。

スクリプトを実行してください:

4. 欠落した引用を修正する

Bashスクリプトの構文から引用符(“)を見逃した場合、このエラーに遭遇する可能性があります。以下のコードを実行すると、予期しないファイルの終わりのエラーが発生します。

最初のエコー文が引用符(“)を欠いていることがわかります。

修理する

引用符を入れると、エラーが解消されます。

5. 足りない括弧を修正する

予期しないファイルの終わりエラーは、コード内で括弧を見逃した場合にも発生します。次の例を参照してください:

このBashスクリプトを実行すると、エラーが出ます。

修理する

エラーを解消するために括弧を追加してください:

コードを実行してください。

6. 不正な関数呼び出しを修正する

Bashで関数を誤って呼び出すことによって、そのようなエラーが発生することがあります。例えば:

上記のスクリプトでは、関数が丸括弧で呼び出されていますが、これは間違った構文です。スクリプトを実行すると、次のエラーが表示されます。

修理する

エラーを修正するには、関数名の後にある丸括弧を削除してください。

さて、スクリプトを実行してください:

そのBashスクリプトはエラーなしで動作しました。

結論

予期しないファイルの終端エラーは、Bashスクリプトの構文エラーによって発生します。これは、ループ構造、条件文、引用符、または括弧の誤った使用が原因となる可能性があります。このエラーは、Bash構文のハイライト機能を持つテキストエディタを使用することで回避できます。しかし、Bashインタプリタはスクリプトの中で何が欠けているかのヒントを提供し、簡単にデバッグ可能です。