通知スクリプトを強化しようとしています。スクリプトの仕組みは、長時間実行されているシェルコマンドの後ろに置いて、長時間実行されたスクリプトの終了後にあらゆる種類の通知が呼び出されるというものです。別のスクリプトで最後のシェルコマンドの終了コードを取得する
例えば:
sleep 100; my_notify
長時間実行されるスクリプトの終了コードを取得するにはいいだろう、問題はmy_notify
を呼び出すと$?
変数へのアクセス権を持っていない新しいプロセスを作成することです。
は比較:
~ $: ls nonexisting_file; echo "exit code: $?"; echo "PPID: $PPID"
ls: nonexisting_file: No such file or directory
exit code: 1
PPID: 6203
対
~ $: ls nonexisting_file; my_notify
ls: nonexisting_file: No such file or directory
exit code: 0
PPID: 6205
はmy_notify
スクリプトはそれで次のようにあります。
#!/bin/sh
echo "exit code: $?"
echo "PPID: $PPID"
私はの終了コードを取得する方法を探しています前のコマンドはコマンドの構造をあまり変更しないでください。私はそれがもっとtime
のように働くように変更すると、私は事実を認識しています。 my_notify longrunning_command...
私の問題は解決するだろうが、私は実際にコマンドの最後にそれをつけることができ、この2番目の解決の複雑さを恐れる。
これは実行できますか、それとも基本的にシェルが動作する方法と互換性がありますか?
私のシェルはzsh
ですが、私はbash
と同様に動作したいと思います。