Bash
bash :一行上的多個命令,具有不同的退出程式碼
我
bash
使用.c++
_system
_cstdlib
我的問題不是關於c++
實現,而是與我的問題相關的一件事是我必須在一行上執行多個命令。例如,我執行另一個目錄中包含的 gnuplot 腳本。所以我的命令如下:
cd some/path; gnuplot -e gnuplot_file.gp; cd - > /dev/NULL
cd
出於個人原因,這兩個命令都很重要。我還想將輸出“隱藏”在/dev/NULL
.這是我的問題:我如何知道
gnuplot
命令的退出狀態?知道它是否失敗就足夠了。我的問題是我目前得到了最後一個命令的退出狀態,即使
gnuplot
失敗也是如此。我知道如果我使用
&&
而不是;
,如果上一個命令失敗並且退出狀態將為假,則不會執行最後一個命令。但我需要執行最後一個命令……解決方法是什麼?
將其
gnuplot
放入子外殼中,然後它是執行的最後一個命令。您也不再需要最後一個cd
,因為子shell開頭的目錄更改僅影響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