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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容