shell编程进阶之高级变量用法-有类型变量

(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

你可能感兴趣的:(shell编程进阶之高级变量用法-有类型变量)