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

本文详细介绍了Bash Shell中变量的声明方法,包括declare命令的多种用法及选项,如只读变量、整型变量等。同时,还讲解了eval命令的功能,即对变量进行两次扫描并执行,适用于那些一次扫描无法实现功能的情况。此外,文章还解释了间接变量引用的概念及其实现方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值