每日最新頭條.有趣資訊

Linux 命令正確的退出方式:exit 0

引言

通常,在編寫Bash腳本時,需要在滿足特定條件時終止腳本,或者根據命令的退出代碼采取措施。

在本文中,我們將介紹Bash exit內置命令和已執行命令的退出狀態。

退出狀態

每個shell命令在成功終止時都會返回退出代碼。

按照慣例,退出代碼為零表示命令已成功完成,非退出代碼為零表示遇到錯誤。

特殊變量$?返回最後執行的命令的退出狀態:

date &> /dev/null

echo $?

該 date 命令成功完成,並且退出代碼為 0。

如果嘗試ls在不存在的目錄上運行,則退出代碼將為非零:

ls /nonexisting_dir &> /dev/null

echo $?

結果輸出 2。

狀態代碼可用於找出命令失敗的原因。每個命令的手冊頁,都包含有關退出代碼的信息。

當執行多命令管道時,管道的退出狀態為最後一條命令的退出狀態:

sudo tcpdump -n -l | tee file.out

echo $?

在上面的示例中,echo $?將列印 tee 命令的退出代碼。

Bash exit 指令

該exit命令以 N 狀態退出 shell 程序。它具有以下語法:

exit N

如果N未給出,則退出狀態代碼是最後執行的命令的退出狀態代碼。

在shell腳本中使用時,作為exit命令參數提供的值將作為退出代碼返回給shell。

舉例說明

命令的退出狀態可用於條件判斷語句。在以下示例中,如果在文件 filename 內使用grep找到字元串“search-string”,則將以 0 退出(這在shell腳本中為true):

運行以&&(AND)或||(OR)分隔的命令列表時,命令的退出狀態確定是否將執行列表中的下一個命令。此處,mkdir 僅在cd返回 0 時才執行命令:

cd /opt/code && mkdir project

如果腳本結尾exit沒有指定參數,則腳本退出代碼是腳本中最後執行的命令的退出代碼。

#!/bin/bash

echo "doing stuff..."

exit

僅僅使用 exit,相當於調用 exit $?。或者你也可以省略 exit。

下面是顯示非腳本用戶調用腳本時如何終止腳本的示例:

如果您以root用戶身份運行腳本,則退出代碼將為零。否則,腳本將以status退出1。

寫在最後

每個 shell 命令終止時,都會返回退出碼,在 bash 腳本中你可以靈活地使用,並控制程序流程。

Happy coding :_)

我是 @程序員小助手 ,持續分享編程知識,歡迎關注。

  • 相關文章
獲得更多的PTT最新消息
按讚加入粉絲團