HOWTO · Bash

Bash スクリプトを終了する

Bash スクリプトの初心者向けガイドと、Bash スクリプトを終了する方法。

このページの内容

この記事では、Bash スクリプトについて簡単に紹介し、エラーが発生した場合に Bash スクリプトを終了する方法について説明します。 さらに、Bash スクリプトの制限と利点についても説明します。

バッシュスクリプトとは

コンピュータのスクリプト/プログラムは、何をすべきか、何を言うべきかをコンピュータに指示します。 同様に、Bash スクリプトは、実行する操作について Bash をガイドする一連のコマンドです。

Bash スクリプトは、実行する一連のコマンドを含む単純なテキスト ファイルです。 このコマンド セットは、Bash インターフェースで直接記述できる多くのコマンド ライン命令 (例: lscdrm など) の順序付けられた組み合わせにすることができます。

コマンド ライン プロンプトから実行されるコマンドは、スクリプトに入力することもでき、コマンド ライン プロンプトと同じ結果が得られます。 同様に、スクリプト ファイル内の各コマンドは、Bash コマンドライン インターフェイスに直接入力することもでき、結果は同じになります。

追加の調整は必要ありません。 構文に従ってコマンドを入力するだけで、同じ結果が得られます。

コマンド ラインに入力する代わりに、単純なテキスト ファイルに入力しています。

拡張子 .sh は一般的に Bash プログラムで使用されます (例: loopScript.sh)。 ご存じのとおり、Linux は拡張機能のないオペレーティング システムです。 したがって、スクリプトが正しく機能するために拡張子は必須ではありません。

Bash スクリプトの使用を避けるべき場合 (つまり、制限事項)

Bash スクリプトを避ける必要がある特定のケースがあります。 それらのいくつかは次のとおりです。

  1. 特に速度が主な焦点である場合に、多くのリソースを必要とするタスク (ソート関数、ハッシュ関数、再帰関数など)
  2. 浮動小数点演算などの多くの数学演算を必要とする関数、または計算に複素数を使用する関数 (代わりに C++ または FORTRAN を使用します)。 異なるプラットフォーム間で移植可能なアプリケーションを作成する場合は、C または Java を使用する必要があります。
  3. 複雑なアプリケーションには構造化プログラミングが必要です。
  4. 会社の将来を賭けたビジネスに不可欠なプログラム。
  5. システムの完全性を確保し、侵入、クラッキング、または損傷から保護する必要がある場合など、セキュリティが重要な状況。
  6. プロジェクトは、相互接続されたサブコンポーネントで構成されています。
  7. 大規模なファイル活動が必要です。 (Bash はシリアル ファイルに行単位でしかアクセスできません。)
  8. 多次元配列には、ネイティブ サポートが必要です。
  9. キューやグラフなどのデータ構造が必要です。
  10. ビジュアルまたはグラフィカル ユーザー インターフェイスを作成または管理する必要がある。
  11. ハードウェアまたは外部周辺機器とのやり取りが必要です。
  12. I/O ポートまたはソケットが必要です。
  13. 組み込みライブラリまたは古いレガシー コードを使用する必要があります。
  14. クローズド ソースのプロプライエタリ アプリケーション (シェル スクリプトを使用すると、誰でもソース コードを参照できるようになります。)

スクリプトを終了する方法

コードをテストするスクリプトを作成し、コードが失敗した場合にスクリプトを終了する必要がある場合など、スクリプトで exit コマンドを使用できます。 スクリプトは、C プログラムのように exit コマンドで終了します。

exit コマンドは、プロセス間通信にも使用できます (つまり、exit コマンドに渡された引数は、スクリプトの親プロセスに返されます)。

すべてのコマンドは、成功または失敗のステータス (戻りステータスまたは終了コード) を生成します。 コマンドが成功すると 0 が返されます。 コマンドが失敗すると、一般にエラー コードとして理解されるゼロ以外の値が生成されます。

正常に完了すると、正常に動作する UNIX コマンド、プログラム、およびユーティリティのほとんどが 0 終了コードを返しますが、いくつかの例外もあります。

スクリプトの関数とスクリプト自体の両方が終了ステータスを返します。 終了ステータスは、関数またはスクリプトの最後のコマンドによって決定されます。

exit コマンドの構文は次のとおりです。

exit nn

exit nn コマンドをスクリプト内で使用して、シェルに nn 終了ステータスを提供できます (nn は 0 から 255 の範囲の整数でなければなりません)。 終了ステータスは、スクリプトがパラメータなしの終了で終了したときに、スクリプトで実行された最後のコマンドの終了ステータスです (終了の前)。

例:

#!/bin/bash

FIRST COMMAND
..
..
LAST COMMAND
# It will exit the script with the status of the last command.
exit

exitexit $?、または単にexitを省略しても、すべて同じ意味を持ちます: 最後のコマンドのステータスで終了します。 スクリプトが終了したら、コマンドecho $?を使用してステータスを確認できます。

特定の終了コードには予約済みの意味があり、ユーザーが定義するべきではありません。 そのようなコードとその意味を以下に示します。

終了コード 説明
1 すべての一般的なエラーをキャッチ
2 組み込みのシェル関数が誤用された場合
126 呼び出されたコマンドを実行できません
127 呼び出されたコマンドが見つかりません
128 無効な引数が渡されました
130 スクリプトは Ctrl+C キーボード キーを使用して終了します
255* 範囲外の終了ステータス