BASHプログラミング
 Computer >> コンピューター >  >> プログラミング >> BASHプログラミング

実際の例を含む Bash シェル終了ステータスのチュートリアル

bash の紹介記事で、シェル スクリプト ファイルには、シェル インタープリターによって実行されるコマンドのリストが含まれていることを学びました。この記事では、シェル コマンドとその内部について説明します。

コマンドは一連の単語です。最初の単語は実行するコマンドを示し、残りの単語は引数として渡されます。引数はコマンドのオプションまたはパラメータである可能性があります。

コマンド ラインで実行する一般的な Unix コマンドの一部シェルコマンドです。たとえば、ls、lpr、grep コマンドなどです。

$ ls -alF

$ lpr filename

$ grep "string" filename

シェル コマンドの終了ステータス

コマンドの戻り値は終了ステータス、またはコマンドがシグナル N で終了した場合は 128 + N です。終了ステータスは、コマンド実行の結果 (成功/失敗) をチェックするために使用されます。終了ステータスがゼロの場合、コマンドは成功です。コマンドが失敗した場合、終了ステータスはゼロ以外になります。

終了値 終了ステータス
0 (ゼロ) 成功
ゼロ以外 失敗
2 間違った使い方
127 コマンドが見つかりません
126 実行可能ファイルではありません

$?シェル変数

シェル変数名 $?最後に実行されたコマンドの終了ステータスを持つ特別な組み込み変数です。

  • シェル関数の実行後、$?関数で最後に実行されたコマンドの終了ステータスを返します。
  • シェル スクリプトの実行後、$?スクリプトで実行された最後のコマンドの終了ステータスを返します。

シェル コマンドの終了ステータスを説明するサンプル シェル スクリプト

次の exitstatus.sh シェル スクリプトは、さまざまなシェル コマンドの終了ステータスの例を示しています。

$ cat exitstatus.sh
#! /bin/bash

echo -e "Successful execution"
echo -e "====================="
echo "hello world"
# Exit status returns 0, because the above command is a success.
echo "Exit status" $? 

echo -e "Incorrect usage"
echo -e "====================="
ls --option
# Incorrect usage, so exit status will be 2.
echo "Exit status" $? 

echo -e "Command Not found"
echo -e "====================="
bashscript
# Exit status returns 127, because bashscript command not found
echo "Exit status" $? 

echo -e "Command is not an executable"
echo -e "============================="
ls -l execution.sh
./execution.sh
# Exit status returns 126, because its not an executable.
echo "Exit status" $?

ここで、上記の exitstatus.sh を実行して、サンプル シェル スクリプトによって提供されるさまざまな終了ステータスを確認します。

$ bash exitstatus.sh
Successful execution
=====================
hello world
Exit status 0
Incorrect usage
=====================
ls: unrecognized option `--option'
Try `ls --help' for more information.
Exit status 2
Command Not found
=====================
exitstaus.sh: line 15: bashscript: command not found
Exit status 127
Command is not an executable
=============================
-rw-r--r-- 1 root root 659 Mar 9 13:36 execution.sh
exitstatus.sh: line 21: ./execution.sh: Permission denied
Exit status 126

注:関数またはコマンドの戻り値をチェックすることは、プログラマーの主な責任の 1 つです。これは、コードを書く際の第 2 の性質になるはずです。

<センター>
  1. Bash 変数チュートリアル – 6 つの実用的な Bash グローバル変数とローカル変数の例

    この記事は、進行中の bash チュートリアル シリーズの一部です。他のプログラミング言語と同様に、Bash にも変数が用意されています。 Bash 変数は、プログラムの存続期間中に必要となる情報を一時的に格納します。構文: VARNAME=VALUE 注: 変数の割り当てでは、「=」記号の周りにスペースを入れないでください。 VAR=VALUE を使用すると、シェルは「=」を記号として認識し、コマンドを変数割り当てとして扱います。 VAR =VALUE を使用すると、シェルは VAR がコマンドの名前であると想定し、それを実行しようとします。 シェルは変数の型を気にしません。変数には、

  2. 5 つの実用的な例を含む Bash スクリプト入門チュートリアル

    進行中の Unix Sed および Unix Awk シリーズと同様に、Bash スクリプトに関するいくつかの記事を投稿します。実用的な例ですべての bash スクリプト テクニックをカバーします。 シェルは、ユーザー コマンドを解釈するプログラムです。コマンドは、ユーザーが直接入力するか、シェル スクリプトと呼ばれるファイルから読み取るかのいずれかです。ユーザーからの入力を直接読み取る場合、シェルは対話型シェルとして呼び出されます。 シェルは、ファイルからコマンドを読み取って実行するときに、非対話型シェルとして呼び出されます。この場合、シェルはスクリプト ファイルの各行を上から下に読み取