(1)declare命令
Shell 變量一般是無類型的,但是bashShell 提供了declare和typeset
- declare [ 選項] 變量名
-r 聲明或顯示只讀變量
-i 將變量定義為整型數
-a 將變量定義為數組
-A 將變量定義為關聯數組
-f 顯示此腳本前定義過的所有函數名及其內容
-F 僅顯示此腳本前定義過的所有函數名
-x 聲明或顯示環境變量和函數
-l 聲明變量為小寫字母
declare –l var=UPPER
-u 母 聲明變量為大寫字母
eclare –u var=lower
(2)eval 命令
定義:eval 命令將會首先掃描命令行進行所有的置換,然后再執行該命令。該命令適用于那些一次掃描無法實現其功能的變量.該命令對變量進行兩次掃描
[root@server ~]# CMD=whoami
[root@server ~]# echo $CMD
whoami
[root@server ~]# eval $CMD
root
[root@server ~]# n=10
[root@server ~]# echo {0..$n}
{0..10}
[root@server ~]# eval echo {0..$n}
0 1 2 3 4 5 6 7 8 9 10
(3)間接變量引用
如果第一個變量的值是第二個變量的名字,從第一個變量引用第二個變量的值就稱為間接變量引用
-
variable1 的值是variable2 ,而variable2又是變量名,variable2的值為value ,間接變量引用是指通過variable1獲得變量值value的行為
variable1=variable2 variable2=value
-
bash Shell 提供了兩種格式實現間接變量引用
eval tempvar=\$$variable1 tempvar=${!variable1}
示例:
[root@server ~]# N=NAME
[root@server ~]# NAME=wangnan
[root@server ~]# N1=${!N}
[root@server ~]# echo $N1
wangnan
[root@server ~]# eval N2=\$$N
[root@server ~]# echo $N2
wangxnan