Bash

exit;exit $?; 之間的區別

  • November 8, 2017

這兩個命令之間有什麼區別:

  exec "$(dirname "$0")/suman-shell";
  exit $?;

  exec "$(dirname "$0")/suman-shell";
  exit;

第一種情況是$?多餘的嗎?

您的腳本中有幾個缺陷:

exec "$(dirname "$0")/suman-shell";
exit $?;
  • 第一個是結束分號是多餘的。它們是無害的,但沒有任何用途。行尾已經是分隔符,分號用作單行上多個命令之間的分隔符。它們的存在稍微降低了程式碼的可讀性。
  • 第二個是exit預設返回前一個命令的退出狀態,所以聲明$?是多餘的,儘管表明意圖。
  • 第三個是exec在正常情況下永遠不會返回1,所以exit呼叫沒有被放在首位,也是多餘的。

1返回的唯一情況exec是空參數、損壞的重定向或execfailbash 選項集(這不是預設設置)。第一個和第二個不適用於這裡,並且沒有證據表明第三個適用。

來自help exit

以狀態 N 退出 shell。如果省略 N,則退出狀態是最後執行的命令的狀態。

所以是的,它完全是多餘的。

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