(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