高级变量
Shell 变量一般是无类型的,但是 bash Shell 提供了 declare 命令用于指定变量的类型
语法:declare [选项] 变量名
-r 声明或显示只读变量-i 将变量定义为整型数
-a 将变量定义为数组
-A 将变量定义为关联数组
-f 显示已定义的所有函数名及其内容
-F 仅显示已定义的所有函数名
-x 声明或显示环境变量和函数
-l 声明变量为小写字母 declare –l var=UPPER
-u 声明变量为大写字母 declare –u var=lower
eval 命令
eval 命令将会首先扫描命令行进行所有的置换,然后再执行该命令。该命令适用于那些一次扫描无法实现其功能的变量.该命令对变量进行两次扫描。
语法:eval 变量引用
[root@CentOS7 bin]# CMD=hostname [root@CentOS7 bin]# echo $CMD hostname [root@CentOS7 bin]# eval $CMD CentOS7.miriam
变量的间接引用
假设变量var的值是变量VAR,而变量VAR中有具体的值
bash Shell提供了两种格式实现间接变量引用:
eval var=\$$varvar=${!VAR}
[root@CentOS7 bin]# NAME=CentOS7 [root@CentOS7 bin]# name=NAME [root@CentOS7 bin]# echo $name NAME [root@CentOS7 bin]# echo $NAME CentOS7 [root@CentOS7 bin]# eval name=\$$name [root@CentOS7 bin]# echo $name CentOS7 [root@CentOS7 bin]# echo ${!name} CentOS7