bash-shell高度なプログラミング--ステータスコードの終了と終了
3142 ワード
終了ステータスコードと終了ステータスコード
実際には
もちろん、スクリプトの関数やスクリプト自体も終了ステータスコードを返し、スクリプトで最後に実行されたコマンドがスクリプトが返すステータスコード(exit以前のコマンド)を決定します.
パラメータを持たないexitコマンドとexit$?スクリプトの最後にexitを書かなくても効果は同じです
exit
はスクリプトを終了するために使用されることはよく知られています.exit
を使用してスクリプトを終了することもできます.よく使われるC言語のように、スクリプトの親プロセスに渡される値も返されます.親プロセスはこの値を使用して次の処理を行います.実際には
linux
でどのコマンドを実行しても終了コードが返され、成功したコマンドは0を返し、成功しなかったコマンドはゼロ以外の値を返し、ゼロ以外の値は通常エラーコードとして解釈されます.もちろん、スクリプトの関数やスクリプト自体も終了ステータスコードを返し、スクリプトで最後に実行されたコマンドがスクリプトが返すステータスコード(exit以前のコマンド)を決定します.
#!/bin/bash
tldr ls
. . .
# exit
ls -l name
exit
# exit $?
パラメータを持たないexitコマンドとexit$?スクリプトの最後にexitを書かなくても効果は同じです
bash
スクリプトの$?
は、最後に実行されたコマンドの終了ステータスコードを保存し、関数が戻った後、$?
は、関数の最後に実行されたコマンドの終了ステータスコードを同様に保存する.この終了ステータスコードは、スクリプトで最後に実行されたコマンドの終了ステータスコードです.#!/bin/bash
echo hello
echo $?
# 0, .
lskdf
# .
echo $?
# , .
echo
exit 113
# 113 shell.
# , "echo $?".
#
andrew@andrew:/work/bash/src$ bash exit_example.sh
hello
0
exit_example.sh: 5: lskdf:
127
andrew@andrew:/work/bash/src$ echo $?
113
bash
テストスクリプトのコマンド実行の結果を使用すると、特に便利になります.$?
論理非操作は、コマンドまたは条件のテスト結果を反転させ、終了ステータスコードに影響します.true # "true" .
echo "exit status of \"true\" = $?"
# 0
! true
echo "exit status of \"! true\" = $?"
# 1
# : "!" .
# !true "command not found"
# '!' , Bash .
true
!true
# , .
# (true).