函式的退出程式碼是其最後一個命令的退出程式碼

考慮此示例函式來檢查主機是否已啟動:

is_alive() {
    ping -c1 "$1" &> /dev/null
}

此函式將單個 ping 傳送到第一個函式引數指定的主機。ping 的輸出和錯誤輸出都被重定向到/dev/null,因此該函式將永遠不會輸出任何內容。但是 ping 命令在成功時將具有退出程式碼 0,在失敗時將具有非零。由於這是函式的最後一個(在此示例中是唯一的)命令,ping 的退出程式碼將重用於函式本身的退出程式碼。

這個事實在條件語句中非常有用。

例如,如果主機 graucho 已啟動,則使用 ssh 連線到它:

if is_alive graucho; then
    ssh graucho
fi

另一個例子:反覆檢查直到主機 graucho 啟動,然後用 ssh 連線到它:

while ! is_alive graucho; do
    sleep 5
done
ssh graucho