GNU/Linux >> Linux の 問題 >  >> Linux

実際の例を含む 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 の性質になるはずです。


Linux
  1. 15 の例を含む究極の Bash Array チュートリアル

  2. 実用的な例を含む Linux rsync コマンド

  3. Bash の「test」コマンドでの「&&」と「&」の比較

  1. コマンド例を含むvimチュートリアル

  2. 15 の便利な Bash シェル組み込みコマンド (例付き)

  3. 実際の例を含むエコーコマンド

  1. 例を使用したBashヒアドキュメントチュートリアル

  2. 例を含むLinuxzforceコマンドチュートリアル

  3. 初心者向けのLinuxtrコマンドチュートリアル(例付き)