Bash

bash :一行上的多個命令,具有不同的退出程式碼

  • February 5, 2016

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

引用自:https://unix.stackexchange.com/questions/260056