Bash 特殊變量($0,$?,$#,$@,$$,$*)
Bash 是一個(gè)功能強(qiáng)大的 Shell,提供了各種特殊變量,可以用于操作和控制腳本的行為。這些變量提供了有關(guān)腳本運(yùn)行環(huán)境的基本信息,包括命令行參數(shù)、當(dāng)前進(jìn)程 ID 和上次執(zhí)行命令的狀態(tài)。
在本文中,我們將提供所有 Bash 特殊變量的深入指南,包括它們的使用示例和常見的問題避免方法。
讓我們詳細(xì)討論特殊變量并提供示例。
$0 – 正在執(zhí)行的腳本的名稱
在 Bash 中,$0 是一個(gè)特殊參數(shù),它保存當(dāng)前正在執(zhí)行的腳本或Shell的名稱。它也被稱為腳本的“名稱”或“零號(hào)參數(shù)”。
例如,假設(shè)您有一個(gè)名為“www.linuxmi.com.sh”的腳本,您想從任何目錄運(yùn)行它。那么,您可以使用 $0 變量來確定正在執(zhí)行的腳本的名稱:
$1,$2,…,$9 – 命令行參數(shù)
$1,$2,…,$9 變量包含傳遞給腳本的前九個(gè)命令行參數(shù)。這些變量對于創(chuàng)建接受用戶輸入的 shell 腳本非常有用。
例如,假設(shè)您有一個(gè)名為“??greet.sh??”的腳本,它將一個(gè)名稱作為其第一個(gè)命令行參數(shù)。在這種情況下,您可以使用 $1 變量來檢索名稱,然后在腳本的輸出中使用它。
如果腳本需要訪問超過九個(gè)命令行參數(shù),則可以使用 ${10}、${11},…,${N} 變量來檢索它們。這些變量可以與 shift 命令一起使用,以批處理方式處理命令行參數(shù)。確保變量用 {} 括起來。
$# – 命令行參數(shù)的數(shù)量
$# 變量包含傳遞給腳本的命令行參數(shù)數(shù)量。此變量對于創(chuàng)建驗(yàn)證用戶輸入的 shell 腳本非常有用。
例如,假設(shè)您有一個(gè)名為“??linuxmi.sh??”的腳本,需要兩個(gè)命令行參數(shù)。在這種情況下,您可以使用 $# 變量來確保提供了正確數(shù)量的參數(shù)。
$* – 將所有命令行參數(shù)作為一個(gè)字符串
$* 變量包含作為單個(gè)字符串傳遞給腳本的所有命令行參數(shù)。該變量對于需要操作整個(gè)命令行字符串的Shell腳本非常有用。
例如,假設(shè)您有一個(gè)名為“join.sh”的腳本,用于連接作為命令行參數(shù)提供的兩個(gè)字符串。在這種情況下,您可以使用$*變量來連接這些字符串。
$@ – 將所有命令行參數(shù)作為數(shù)組
$@ 變量包含作為數(shù)組傳遞給腳本的所有命令行參數(shù)。該變量對于需要操作單個(gè)命令行參數(shù)的Shell腳本非常有用。
例如,假設(shè)您有一個(gè)名為“l(fā)ist.sh”的腳本,用于列出作為命令行參數(shù)提供的目錄中的所有文件。在這種情況下,您可以使用$@變量來迭代每個(gè)目錄名稱并列出該目錄中的文件。
$? – 最近執(zhí)行命令的退出狀態(tài)
$? 變量包含最近執(zhí)行命令的退出狀態(tài)。該變量對于需要處理錯(cuò)誤或根據(jù)命令的成功或失敗采取不同操作的Shell腳本非常有用。
例如,假設(shè)您有一個(gè)名為“create-file.sh”的腳本,用于創(chuàng)建一個(gè)文件并返回表示成功或失敗的退出狀態(tài)。在這種情況下,您可以使用$?變量來檢查退出狀態(tài)并采取適當(dāng)?shù)牟僮鳌?/p>
$$ 變量包含當(dāng)前腳本的進(jìn)程ID
該變量對于需要管理多個(gè)進(jìn)程或創(chuàng)建唯一文件名的Shell腳本非常有用。 例如,假設(shè)您有一個(gè)名為“l(fā)og.sh”的腳本,用于記錄信息到一個(gè)基于進(jìn)程ID的唯一文件名的文件中。在這種情況下,您可以使用$$變量來生成一個(gè)唯一的文件名。
$! – 最近后臺(tái)命令的進(jìn)程ID
$! 變量包含腳本執(zhí)行的最近后臺(tái)命令的進(jìn)程ID。該變量對于需要管理多個(gè)進(jìn)程或監(jiān)視長時(shí)間運(yùn)行的命令的Shell腳本非常有用。
例如,假設(shè)您有一個(gè)名為“www.linuxmi.com.sh”的腳本,用于在后臺(tái)運(yùn)行一個(gè)命令并記錄其進(jìn)度。在這種情況下,您可以使用$!變量來監(jiān)視命令的進(jìn)度。
總結(jié)
Bash 特殊變量提供了有關(guān)腳本運(yùn)行環(huán)境的重要信息。這些變量使您能夠創(chuàng)建更加靈活、健壯和不容易出現(xiàn)異?;虮罎⒌腟hell腳本。通過掌握這些變量的用法,您可以將自己的Shell腳本技能提升到更高的水平。