鍍金池/ 教程/ Linux/ 特殊變量
通信工具
信號和 Traps
文件管理
vi 編輯器使用向?qū)?/span>
替代
變量
環(huán)境
進(jìn)程管理
實用工具
引用機制
Manpage 幫助
文件系統(tǒng)基礎(chǔ)知識
系統(tǒng)日志
循環(huán)
正則表達(dá)式和 SED
目錄
函數(shù)
管道和過濾器
特殊變量
輸入/輸出重定向
系統(tǒng)性能
用戶管理
循環(huán)控制
決策
什么是 UNIX ?
數(shù)組
什么是 Shell 腳本
基本操作符
文件權(quán)限

特殊變量

之前的教程就在命名變量時,使用某些非字符數(shù)值作為字符變量名提出警告。這是因為這些字符用于作為特殊的 UNIX 變量的名稱。這些變量是預(yù)留給特定功能的。

例如,$ 字符代表進(jìn)程的 ID 碼,或當(dāng)前 Shell 的 PID:

    $echo $$

以上命令將輸出當(dāng)前 Shell 的 PID:

    29949

下面的表列出了一些特殊變量,可以在你的 Shell 腳本中使用它們:

變量 描述
$0 當(dāng)前腳本的文件名。
$n 這些變量對應(yīng)于調(diào)用一個腳本時的參數(shù)。n 是一個十進(jìn)制正整數(shù),對應(yīng)于特定參數(shù)的位置(第一個參數(shù)是 $1,第二個參數(shù)是 $2 等等)。
$# 提供給腳本的參數(shù)數(shù)量。
$* 所有的參數(shù)都表示兩個引用。如果一個腳本接收了兩個參數(shù),即 $* 相當(dāng)于 $1 $2。
$@ 所有的參數(shù)都是兩個單獨地引用。如果一個腳本接收了兩個參數(shù),即 $@ 相當(dāng)于 $1 $2。
$? 執(zhí)行最后一個命令的退出態(tài)。
$$ 當(dāng)前 shell 的進(jìn)程號。對于 shell 腳本,即他們正在執(zhí)行的進(jìn)程的 ID。
$! 最后一個后臺命令的進(jìn)程號。

命令行參數(shù)

命令行參數(shù) $1,$2,$3,……$9 是位置參數(shù),$0 指向?qū)嶋H的命令,程序,shell 腳本或函數(shù)。$1,$2,$3,……$9 作為命令的參數(shù)。

以下腳本使用與命令行相關(guān)的各種特殊變量:

    #!/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

特殊參數(shù) $* 和 $@

存在一些特殊參數(shù),使用它們可以訪問所有的命令行參數(shù)。除非他們包含在雙引號 "" 中,否則 $* 和 $@ 運行是相同的。

這兩個參數(shù)都指定所有的命令行參數(shù),但 $* 特殊參數(shù)將整個列表作為一個參數(shù),各個值之間用空格隔開。而 $@ 特殊參數(shù)將整個列表分隔成單獨的參數(shù)。

我們可以編寫如下所示的 Shell 腳本,使用 $* 或 $@ 特殊參數(shù)來處理數(shù)量未知的命令行參數(shù):

    #!/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)。

退出態(tài)是每個命令在其完成后返回的數(shù)值。一般來說,大多數(shù)命令如果它們成功地執(zhí)行,將 0 作為退出態(tài)返回,如果它們執(zhí)行失敗,則將 1 作為退出態(tài)返回。

一些命令由于一些特定的原因,會返回額外的退出狀態(tài)。例如,一些命令為了區(qū)分不同類型的錯誤,將根據(jù)特定類型的失敗原因返回各種不同的退出態(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
    $
上一篇:用戶管理下一篇:管道和過濾器