簡體   English   中英

是否可以從子shell獲取退出代碼?

[英]Is it possible to get the exit code from a subshell?

我們假設我有一個bash腳本,我稱之為:

bash -c "some_command"
do something with code of some_command here

是否有可能獲得some_command的代碼? 我沒有直接在運行腳本的shell中執行some_command ,因為我不想改變它的環境。

$? 將像往常一樣包含some_command的返回代碼。

當然它也可能包含來自bash的代碼,萬一在你的命令執行之前出現問題(錯誤的文件名,諸如此類)。

這是$?的例子$? PaggasMatti提到的括號子shell:

$ (exit a); echo $?

$ (exit 33); echo $?

在第一種情況下,該代碼是一個擊錯誤,並在第二情況下,它的退出代碼exit

你可以使用$? 變量,請查看bash文檔,它存儲最后一個命令的退出狀態。

另外,你可能想要查看bash的括號樣式命令塊(例如comm1 && (comm2 || comm3) && comm4 ),它們總是在子shell中執行,因此不會改變當前環境,並且更強大!

編輯:例如,當使用()樣式塊與bash -c'命令'相比時,您不必擔心使用空格或任何其他特殊shell語法轉義任何參數字符串。 您直接使用shell語法,它是其余代碼的正常部分。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM