W3Cschool
恭喜您成為首批注冊用戶
獲得88經驗值獎勵
之前的教程就在命名變量時,使用某些非字符數值作為字符變量名提出警告。這是因為這些字符用于作為特殊的 UNIX 變量的名稱。這些變量是預留給特定功能的。
例如,$ 字符代表進程的 ID 碼,或當前 Shell 的 PID:
$echo $$
以上命令將輸出當前 Shell 的 PID:
29949
下面的表列出了一些特殊變量,可以在你的 Shell 腳本中使用它們:
變量 | 描述 |
---|---|
$0 | 當前腳本的文件名。 |
$n | 這些變量對應于調用一個腳本時的參數。n 是一個十進制正整數,對應于特定參數的位置(第一個參數是 $1,第二個參數是 $2 等等)。 |
$# | 提供給腳本的參數數量。 |
$* | 所有的參數都表示兩個引用。如果一個腳本接收了兩個參數,即 $* 相當于 $1 $2。 |
$@ | 所有的參數都是兩個單獨地引用。如果一個腳本接收了兩個參數,即 $@ 相當于 $1 $2。 |
$? | 執(zhí)行最后一個命令的退出態(tài)。 |
$$ | 當前 shell 的進程號。對于 shell 腳本,即他們正在執(zhí)行的進程的 ID。 |
$! | 最后一個后臺命令的進程號。 |
命令行參數 $1,$2,$3,……$9 是位置參數,$0 指向實際的命令,程序,shell 腳本或函數。$1,$2,$3,……$9 作為命令的參數。
以下腳本使用與命令行相關的各種特殊變量:
#!/bin/sh
echo "File Name: $0"
echo "First Parameter : $1"
echo "Second Parameter : $2"
echo "Quoted Values: $@"
echo "Quoted Values: $*"
echo "Total Number of Parameters : $#"
這是一個運行上述腳本的示例:
$./test.sh Zara Ali
File Name : ./test.sh
First Parameter : Zara
Second Parameter : Ali
Quoted Values: Zara Ali
Quoted Values: Zara Ali
Total Number of Parameters : 2
存在一些特殊參數,使用它們可以訪問所有的命令行參數。除非他們包含在雙引號 "" 中,否則 $* 和 $@ 運行是相同的。
這兩個參數都指定所有的命令行參數,但 $* 特殊參數將整個列表作為一個參數,各個值之間用空格隔開。而 $@ 特殊參數將整個列表分隔成單獨的參數。
我們可以編寫如下所示的 Shell 腳本,使用 $* 或 $@ 特殊參數來處理數量未知的命令行參數:
#!/bin/sh
for TOKEN in $*
do
echo $TOKEN
done
作為示例,運行上述腳本:
$./test.sh Zara Ali 10 Years Old
Zara
Ali
10
Years
Old
注意:這里 do……done 是一種循環(huán),我們將在后續(xù)教程中介紹它。
$? 變量代表前面的命令的退出態(tài)。
退出態(tài)是每個命令在其完成后返回的數值。一般來說,大多數命令如果它們成功地執(zhí)行,將 0 作為退出態(tài)返回,如果它們執(zhí)行失敗,則將 1 作為退出態(tài)返回。
一些命令由于一些特定的原因,會返回額外的退出狀態(tài)。例如,一些命令為了區(qū)分不同類型的錯誤,將根據特定類型的失敗原因返回各種不同的退出態(tài)值。
下面是一個成功命令的例子:
$./test.sh Zara Ali
File Name : ./test.sh
First Parameter : Zara
Second Parameter : Ali
Quoted Values: Zara Ali
Quoted Values: Zara Ali
Total Number of Parameters : 2
$echo $?
0
$
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: