HOWTO · Bash
Bash スクリプトを終了する
Bash スクリプトの初心者向けガイドと、Bash スクリプトを終了する方法。
このページの内容
この記事では、Bash スクリプトについて簡単に紹介し、エラーが発生した場合に Bash スクリプトを終了する方法について説明します。 さらに、Bash スクリプトの制限と利点についても説明します。
バッシュスクリプトとは
コンピュータのスクリプト/プログラムは、何をすべきか、何を言うべきかをコンピュータに指示します。 同様に、Bash スクリプトは、実行する操作について Bash をガイドする一連のコマンドです。
Bash スクリプトは、実行する一連のコマンドを含む単純なテキスト ファイルです。 このコマンド セットは、Bash インターフェースで直接記述できる多くのコマンド ライン命令 (例: ls、cd、rm など) の順序付けられた組み合わせにすることができます。
コマンド ライン プロンプトから実行されるコマンドは、スクリプトに入力することもでき、コマンド ライン プロンプトと同じ結果が得られます。 同様に、スクリプト ファイル内の各コマンドは、Bash コマンドライン インターフェイスに直接入力することもでき、結果は同じになります。
追加の調整は必要ありません。 構文に従ってコマンドを入力するだけで、同じ結果が得られます。
コマンド ラインに入力する代わりに、単純なテキスト ファイルに入力しています。
拡張子 .sh は一般的に Bash プログラムで使用されます (例: loopScript.sh)。 ご存じのとおり、Linux は拡張機能のないオペレーティング システムです。 したがって、スクリプトが正しく機能するために拡張子は必須ではありません。
Bash スクリプトの使用を避けるべき場合 (つまり、制限事項)
Bash スクリプトを避ける必要がある特定のケースがあります。 それらのいくつかは次のとおりです。
- 特に速度が主な焦点である場合に、多くのリソースを必要とするタスク (ソート関数、ハッシュ関数、再帰関数など)
- 浮動小数点演算などの多くの数学演算を必要とする関数、または計算に複素数を使用する関数 (代わりに C++ または FORTRAN を使用します)。 異なるプラットフォーム間で移植可能なアプリケーションを作成する場合は、C または Java を使用する必要があります。
- 複雑なアプリケーションには構造化プログラミングが必要です。
- 会社の将来を賭けたビジネスに不可欠なプログラム。
- システムの完全性を確保し、侵入、クラッキング、または損傷から保護する必要がある場合など、セキュリティが重要な状況。
- プロジェクトは、相互接続されたサブコンポーネントで構成されています。
- 大規模なファイル活動が必要です。 (Bash はシリアル ファイルに行単位でしかアクセスできません。)
- 多次元配列には、ネイティブ サポートが必要です。
- キューやグラフなどのデータ構造が必要です。
- ビジュアルまたはグラフィカル ユーザー インターフェイスを作成または管理する必要がある。
- ハードウェアまたは外部周辺機器とのやり取りが必要です。
- I/O ポートまたはソケットが必要です。
- 組み込みライブラリまたは古いレガシー コードを使用する必要があります。
- クローズド ソースのプロプライエタリ アプリケーション (シェル スクリプトを使用すると、誰でもソース コードを参照できるようになります。)
スクリプトを終了する方法
コードをテストするスクリプトを作成し、コードが失敗した場合にスクリプトを終了する必要がある場合など、スクリプトで 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
exit、exit $?、または単にexitを省略しても、すべて同じ意味を持ちます: 最後のコマンドのステータスで終了します。 スクリプトが終了したら、コマンドecho $?を使用してステータスを確認できます。
特定の終了コードには予約済みの意味があり、ユーザーが定義するべきではありません。 そのようなコードとその意味を以下に示します。
| 終了コード | 説明 |
|---|---|
| 1 | すべての一般的なエラーをキャッチ |
| 2 | 組み込みのシェル関数が誤用された場合 |
| 126 | 呼び出されたコマンドを実行できません |
| 127 | 呼び出されたコマンドが見つかりません |
| 128 | 無効な引数が渡されました |
| 130 | スクリプトは Ctrl+C キーボード キーを使用して終了します |
| 255* | 範囲外の終了ステータス |