こんにちは、私は別のシェルスクリプトの中からシェルスクリプトを呼び出しています。スクリプト呼び出しが成功したら、続行する必要があります。 shコマンドを使用して別のスクリプトを呼び出します。たとえば、次のようになります。
sh payloadjob.sh
if [[ $? -eq 0 ]]; then
echo Success message
else
echo Failure message
fi
ただし、スクリプト呼び出しが成功しても終了ステータス1が提供されますが、成功するには0を返す必要があります。なぜこれが起こるのか、そしてshコマンドによるスクリプト呼び出しが成功したのはどうすればわかりますか?
答え1
payload.sh
スクリプトが明示的またはexit 0
終了しない場合、exit 1
終了状態はスクリプトの最後のコマンドの終了状態になります。
最後のコマンドが実行された場合(たとえば、見つからないか削除できない場合)、終了ステータスrm something 2>/dev/null
は0ではありません。something
表示されるスクリプトでは、変数を正しくテストしています$?
。また、テストを同等に単純化することもできます。
if sh payload.sh; then
echo "Success"
else
echo "Failure"
fi