Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> Linux 教學

Shell Script 變數完整指南:從系統變數到使用者自定義變數

編輯:Linux 教學

在所有程式設計語言中,變數都扮演著核心角色。Linux Shell Script 也不例外,它主要使用兩種類型的變數:系統定義變數與使用者定義變數。Shell 腳本中的變數本質上是對數值或字元值的引用,且不像正式程式語言那樣要求宣告資料類型,這使得腳本撰寫更靈活。

系統定義變數

這些變數由作業系統(Linux)建立並維護,通常以全大寫命名。您可以透過 set 指令查看所有系統變數。常見範例如下:

變數名稱含義
BASH=/bin/bashShell 名稱
BASH_VERSION=4.1.2(1)Bash 版本
COLUMNS=80螢幕欄數
HOME=/home/linuxtechi使用者家目錄
LINES=25螢幕列數
LOGNAME=LinuxTechi登入名稱
OSTYPE=Linux作業系統類型
PATH=/usr/bin:/sbin:/bin:/usr/sbin路徑設定
PS1=[\u@\h \W]\$提示符設定
PWD=/home/linuxtechi目前工作目錄
SHELL=/bin/bashShell 名稱
USERNAME=linuxtechi目前登入使用者

要列印這些變數值,使用 echo 指令並加上 $ 前綴:

# echo $HOME
# echo $USERNAME

在腳本中引用環境變數同樣需加上 $。例如:

$ cat myscript
#!/bin/bash
# 從系統顯示使用者資訊
echo "User info for userid: $USER"
echo UID: $UID
echo HOME: $HOME

執行時,變數會被替換為當前值。注意:在雙引號中引用變數(如 $USER)仍會被正確解析。但這帶來一個陷阱:

$ echo "The cost of the item is $15"
The cost of the item is 5

Shell 將 $1 視為變數(未定義),故只輸出 5。若要輸出字面美元符號,必須用反斜線轉義:

$ echo "The cost of the item is \$15"
The cost of the item is $15

使用者定義變數

使用者可在腳本中自訂變數,暫存資料並在腳本生命週期內使用,使腳本更像真正的程式。命名規則:最多 20 個字元(字母、數字、底線),區分大小寫(Var1 ≠ var1)。

賦值使用等號,等號兩邊不可有空格:

var1=10
var2=-57
var3=testing
var4="still more testing"

Shell 會自動判斷資料型態。變數值在腳本執行期間保持,腳本結束後銷毀。引用時加 $,賦值時不加:

$ cat test3
#!/bin/bash
days=10
guest="Katie"
echo "$guest checked in $days days ago"
days=5
guest="Jessica"
echo "$guest checked in $days days ago"

輸出:

Katie checked in 10 days ago
Jessica checked in 5 days ago

將一個變數值賦給另一個變數時,右側必須加 $:

value1=10
value2=$value1  # 正確
# value2=value1  # 錯誤,會被視為字串 "value1"

反引號(`)與命令替換

反引號可將指令輸出賦值給變數,是腳本程式設計的基石:

testing=`date`

範例:

$ cat test5
#!/bin/bash
testing=`date`
echo "The date and time are: " $testing

輸出:

The date and time are: Mon Jan 31 20:23:25 EDT 2011

注意:Bash 也支援 $(...) 語法替代反引號,優點是可巢狀使用:

$ echo "Today's date & time is: " $(date)
Today's date & time is: Sun Jul 27 16:26:56 IST 2014
Copyright © Windows教程網 All Rights Reserved