2017-07-26 21 views
0

別のシェルスクリプト(B)からシェルスクリプト(A)を実行しようとしています。テスト目的のために、シェルスクリプト(A)は常に例外/エラー(テストのためだけ)を投げます。私はそのスクリプトを実行した直後に終了ステータスコードを取得しようとしています。シェルスクリプト実行の終了ステータスコード

コード:

ケース1:

errormsg=$(sample.sh 2>&1) 
if [ $? -ne 0 ] 
then 
echo $? 
echo "Successful." 
else 
echo $? 
echo "Error." 

出力:

0 
Successful 

ケース2:

errormsg=$(sample.sh 2>&1) 
echo $? 
if [ $? -ne 0 ] 
then 
echo $? 
echo "Successful." 
else 
echo $? 
echo "Error." 

出力:

1 
1 
Error 

なぜ出力に違いがありますか?ケース1でも出力が「エラー」ではないはずですか?

答えて

0

$?は、最後に実行されたコマンドの結果を常に返します。

は、ケース1には、これはあなたの外部スクリプトですが、ケース2には、それはあなたが

+0

は解決策を見つけた別の結果を得る理由ですそれecho $?

です。とにかくありがとう。 –