Unix/Linux - 使用 Shell 變數



在本章中,我們將學習如何在 Unix 中使用 Shell 變數。變數是一個字元字串,我們為其分配一個值。分配的值可以是數字、文字、檔名、裝置或任何其他型別的資料。

變數只不過是指向實際資料的指標。Shell 使您能夠建立、分配和刪除變數。

變數名稱

變數名只能包含字母(a 到 z 或 A 到 Z)、數字(0 到 9)或下劃線字元(_)。

按照慣例,Unix Shell 變數的名稱將使用大寫字母。

以下示例是有效的變數名:

_ALI
TOKEN_A
VAR_1
VAR_2

以下是無效變數名的示例:

2_VAR
-VARIABLE
VAR1-VAR2
VAR_A!

您不能使用其他字元(例如!*-)的原因是這些字元對 Shell 具有特殊含義。

定義變數

變數定義如下:

variable_name=variable_value

例如:

NAME="Zara Ali"

上面的示例定義了變數 NAME 併為其分配了值“Zara Ali”。此型別的變數稱為標量變數。標量變數一次只能儲存一個值。

Shell 使您能夠在變數中儲存任何想要的值。例如:

VAR1="Zara Ali"
VAR2=100

訪問值

要訪問儲存在變數中的值,請在其名稱前加上美元符號($):

例如,以下指令碼將訪問已定義變數 NAME 的值並在 STDOUT 上列印它:

#!/bin/sh

NAME="Zara Ali"
echo $NAME

上述指令碼將生成以下值:

Zara Ali

只讀變數

Shell 提供了一種方法,可以使用 read-only 命令將變數標記為只讀。在變數被標記為只讀後,其值將無法更改。

例如,以下指令碼在嘗試更改 NAME 的值時會生成錯誤:

#!/bin/sh

NAME="Zara Ali"
readonly NAME
NAME="Qadiri"

上述指令碼將生成以下結果:

/bin/sh: NAME: This variable is read only.

取消設定變數

取消設定或刪除變數指示 Shell 從其跟蹤的變數列表中刪除該變數。一旦取消設定變數,您將無法訪問變數中儲存的值。

以下是使用unset命令取消設定已定義變數的語法:

unset variable_name

上述命令取消設定已定義變數的值。這是一個簡單的示例,演示了該命令的工作原理:

#!/bin/sh

NAME="Zara Ali"
unset NAME
echo $NAME

上面的示例不列印任何內容。您不能使用 unset 命令來取消設定標記為readonly的變數。

變數型別

當 Shell 執行時,存在三種主要型別的變數:

  • 區域性變數 - 區域性變數是在 Shell 的當前例項中存在的變數。它對 Shell 啟動的程式不可用。它們在命令提示符處設定。

  • 環境變數 - 環境變數可用於 Shell 的任何子程序。某些程式需要環境變數才能正常執行。通常,Shell 指令碼僅定義其執行的程式所需的那些環境變數。

  • Shell 變數 - Shell 變數是 Shell 設定的特殊變數,Shell 為了正常執行而需要它。其中一些變數是環境變數,而另一些是區域性變數。

廣告