Bash

擷取退出命令的退出程式碼

  • December 10, 2018

我在 bash 腳本中有這個:

exit 3;

exit_code="$?"

if [[ "$exit_code" != "0" ]]; then
   echo -e "${r2g_magenta}Your r2g process is exiting with code $exit_code.${r2g_no_color}";
   exit "$exit_code";
fi

看起來它會在退出命令之後立即退出,這是有道理的。我想知道是否有一些簡單的命令可以提供退出程式碼而無需立即退出?

我猜想:

exec exit 3

但它給出了一條錯誤消息:exec: exit: not found。我能做些什麼?:)

如果您有一個腳本執行某個程序並查看程序的退出狀態(使用 $?),並且您想通過執行一些 導致$?設置為某個已知值(例如,  3)的操作來測試該腳本,只需執行

(exit 3)

括號創建一個子外殼。然後該exit命令使該子 shell 以指定的退出狀態退出。

exit是內置的bash,所以你不能exec。每個bash 的手冊

Bash 的退出狀態是腳本中執行的最後一個命令的退出狀態。如果沒有執行任何命令,則退出狀態為 0。

把所有這些放在一起,我想說你唯一的選擇是將你想要的退出狀態儲存在一個變數中,然後exit $MY_EXIT_STATUS在適當的時候。

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