質問はかなり単純です。を使用して、前のコマンドの終了コードを取得できます$?
。しかし、それは正確に何ですか?
変数の名前に以外の特殊文字を使用することはできないため、変数とは思わない_
。
foo?foo=10
エラーになります: foo?foo=10: command not found
それが変数でない場合、それは何ですか?それに似た人はいますか?
質問はかなり単純です。を使用して、前のコマンドの終了コードを取得できます$?
。しかし、それは正確に何ですか?
変数の名前に以外の特殊文字を使用することはできないため、変数とは思わない_
。
foo?foo=10
エラーになります: foo?foo=10: command not found
それが変数でない場合、それは何ですか?それに似た人はいますか?
回答:
それは何ですか?
$?
コマンド、関数、またはスクリプト自体の終了ステータスを格納する組み込み変数です。
$?
最後に実行されたコマンドの終了ステータスを読み取ります。関数が戻った後、関数で$?
実行された最後のコマンドの終了ステータスを提供します。これは、関数に「戻り値」を与えるBashの方法です。0
成功した場合に返され1 - 255
、エラーの場合は範囲内の整数を返します。
それに似た人もいますか?
はい、bashにはこのような組み込み変数がいくつかあります。ここでリストを見ることができます。参照:http : //www.tldp.org/LDP/abs/html/exit-status.html
dash
、ksh
、zsh
、とりわけ)。
$status
は同じ目的で使用
$?
は変数ですが、特別なものです。そのため、特殊文字を使用できます。
($?)
最後に実行されたフォアグラウンドパイプラインの終了ステータスに展開します。
それだけではなく、シェルはいくつかのパラメーターを特別に扱います。これらのパラメーターは参照のみ可能です。それらへの割り当ては許可されていません。
Variable Meaning
$0 Filename of script
$1 Positional parameter #1
$2 - $9 Positional parameters #2 - #9
${10} Positional parameter #10
$# Number of positional parameters
"$*" All the positional parameters (as a single word) *
"$@" All the positional parameters (as separate strings)
${#*} Number of positional parameters
${#@} Number of positional parameters
$? Return value
$$ Process ID (PID) of script
$- Flags passed to script (using set)
$_ Last argument of previous command
$! Process ID (PID) of last job run in background
* Must be quoted, otherwise it defaults to $@.
ソース:
"$*"
単一の単語としてのすべての位置パラメータだけでなく、単一の単語としての最初の文字で区切られたすべての位置パラメータIFS
です。$@
引用符で囲まれていない場合、結果はフィールド分割の対象となるため、引用符で囲まれていない場合に使用される場合と同じ効果があります。
$?
ある特殊なシェルパラメータ(変数)。
一般に、すべてのユーザー定義変数は、文字クラス([:alnum:]
つまり[a-zA-Z0-9_]
、で始まることはできません[0-9]
)の文字のみを使用して名前を付ける必要があります。
簡単に言えば、$?
は、前のコマンドの終了コード(成功または失敗)を提供するシェル自体の内部機能と見なすことができる特別な変数(およびこれらのかなりの数があります)です。
$?
最後に実行されたコマンドのリターン/終了コードを常に保持するbashの特別な変数です。
を実行すると、ターミナルで表示できますecho $?
。
リターンコードの範囲は[0; 255]。通常、
戻りコード0
はすべてが正常であることを意味します。
他の値はエラーを示します。ほとんどのアプリケーションは1
、カスタム値を返します。コマンドが見つからなかった場合、変数には通常127
この変数を特定の値に設定する場合は、これを簡単に実行しbash -c "exit 5"
て、たとえば戻りコードを返すことができます5
。
setstatus() { return 5; }