bash
コードでコマンドを実行するためにに提供されている関数を使用しています。私の質問は実装に関するものではありませんが、私の質問に関連する1つは、1行に複数のコマンドを実行する必要があることです。c++
system
cstdlib
c++
たとえば、別のディレクトリに含まれているgnuplotスクリプトを実行します。だから私のコマンドは次のようになります。
cd some/path; gnuplot -e gnuplot_file.gp; cd - > /dev/NULL
cd
どちらのコマンドも個人的な理由で重要です。また、出力を「隠したい」と思います/dev/NULL
。
gnuplot
私の質問は次のとおりです。コマンドの終了ステータスをどのように知ることができますか?失敗するかどうかを知るだけで十分です。
私の問題は、現在の最後のコマンドが失敗しても終了ステータスを取得することですgnuplot
。
&&
代わりに、;
前のコマンドが失敗し、終了ステータスがfalseになると、最後のコマンドが実行されないことがわかります。しかし、最後のコマンドを実行する必要があります...
解決策は何ですか?
ベストアンサー1
サブシェルに入れると、gnuplot
最後に実行されるコマンドになります。またcd
、サブシェルの起動時のディレクトリの変更はそのディレクトリにのみ影響するため、最後のディレクトリは必要なくなり、gnuplot
そのディレクトリにリダイレクトすることも/dev/null
意味がありません。
( cd some/path; gnuplot -e gnuplot_file.gp )
/dev/null
たぶんコマンド全体にリダイレクトを適用しようとしますか? (しかし、それはあなたの質問に書いたものではありません。)
( cd some/path; gnuplot -e gnuplot_file.gp ) >/dev/null
最後に、私が好むこのようなコードスニペットは、gnuplot
最初の成功時にのみ実行されますcd
。これは終了状態に影響します。失敗ディレクトリの変更が失敗した場合は返しますが、おそらくより安全なコードです。
( cd some/path && gnuplot -e gnuplot_file.gp ) >/dev/null