私は過去のコマンドが正常に終了した後に実行する必要があるコマンドがたくさんあります。私は最初に& &を使って仕事を始めましたが、その結果として始まったのはかなり長い行です。シェルで以前に実行されたコマンドの終了コードに依存するbashスクリプトを作成できますか?
私は同じタスクを達成することができる自分のスクリプトを作成しようと決心しましたが、一度に1行ずつ実行できます。私はthenDo
それと呼ばれ、ここで私が持っているものだしました:
#!/bin/bash
errorCode=$?
if [[ $errorCode -eq 0 ]]; then
[email protected]
errorCode=$?
fi
return $errorCode
私は$?
の値は、実行のさまざまな段階にあったものを見るために様々な修正の束でこれを実行してみました。 $?
の開始値が常に0
であるため、このスクリプトは常にクリーンスレートで開始されるようです。
今のところ私は.bashrc
で機能を作っていますが、それは私のシェルではうまくいくようですが、他のスクリプトで再度呼び出されるようにこのスクリプトが必要ですこの関数は、さまざまな、時にはネストされたスクリプト呼び出しによって常に持続するとは限りません。
私は、関数の代わりに独自のスクリプトでこれを行う方法を見つけることができれば本当にうれしいでしょう。それを実現させる方法はありますか?
スクリプトの先頭に 'set -e'を追加するか、またはshebangを'#!/ bin/bash -e'に変更するか、手動で 'bash -e scriptfile'で開始してください – anishsane
代わりにスクリプトが必要な理由はありますか関数の? – 123
あなたの質問に答えて - いいえ、あなたのスクリプトは新しいbashプロセスになり、その親で実行されたコマンドの終了ステータスを見たり知ったりしないので、スクリプトではできません。 Walter Aが関数ライブラリを使用し、それを他のスクリプトに組み込む方法はアドバイスです。ところで、関数を 'export -f someFunction'を使ってサブシェルに伝播することができます –