shellscript(9)- 高级变量

shellscript(9)- 高级变量

图片图片

教程每周二、四、六更新

图片

 

图片

有类型变量

图片

 

 

shell变量一般是无类型的,但是shell提供了定义变量类型的方法:declare和typeset

格式:declare  [option]  var_name

-r声明或显示只读变量

-i将变量定义为整型数

-a将变量定义为数组

-A将变量定义为关联数组

-f显示已定义的所有的函数名及其内容

-F仅显示已定义的所有的函数名

-x声明或显示环境变量和函数


图片

变量的间接引用

图片
图片

eval命令

图片

eval命令会首先扫描命令行进行所有的置换,然后再执行该命令。该命令适用于哪些一次扫描无法实现其功能的变量。例如下面的例子如果不用eval就无法实现我们的需求:

[root@cloudstudy function]# a=10[root@cloudstudy function]# echo {1..$a}{1..10}

我们希望能输出1-10所有的数,但是结果却仅仅是把变量做了代换,如果我们使用eval:

[root@cloudstudy function]# eval echo {1..$a}1 2 3 4 5 6 7 8 9 10

eval会首先扫描命令行把$a换成10,然后执行echo命令,输出所有数据。我们再来看一个例子,加深印象:
[root@cloudstudy function]# CMD=ls[root@cloudstudy function]# echo  $CMD    ls[root@cloudstudy function]# eval  $CMD    #看到和上一条命令的区别了吗call_return2.sh      func_config_linux.sh   recursive.sh  ten_min_max.shfunc_call_define.sh  func_define.sh         return2.shfunc_call.sh         recursive2_careful.sh  return.sh

 

图片

间接变量引用

图片

 

 

变量A的值是变量B的名字,那么从A中取B的值就称为间接变量引用。例如:variable1=variable2variable2=valueshell提供了两种格式实现间接变量引用:
eval tempval=\$$variable1    # $$是代表BASHPID,所以需要转义tempval=${!variable1}
示例:
[root@cloudstudy function]# var1=var2[root@cloudstudy function]# var2=jason[root@cloudstudy function]# echo ${!var1}jason
[root@cloudstudy function]# eval echo \$$var1jason

 

 

提示:ShellScript的内容就到这里了,下周我们开始用一些实例来练习ShellScript,学以致用。

 

推荐阅读

 

 

《Linux基础及进阶》:

    074 - ShellScript(4)- 流程控制(2)    075 - ShellScript(5)- 函数(1)    076 - ShellScript(6)- 函数(2)    077 - ShellScript(7)- 数组    078 - ShellScript(8)- 字符串处理

看完本文有收获?请分享给更多人

推荐关注「Cloud研习社」,带你从零开始掌握云计算技术!

Cloud研习社
为Linux云计算零基础同学服务,致力于打造一套完整的linux云计算教程。包括新手学习路线、linux、存储、集群架构以及Docker,K8S,DevOps等
146篇原创内容
公众号

 

图片图片

点个在看你最好看

图片

 

 

 

收录于合集 #一站式教程
 122
上一篇大厂都在用的Linux云计算学习路线,偷学到了!下一篇shellscript(10) - 练习题(1)
阅读 26
posted @ 2022-08-20 15:21  往事已成昨天  阅读(34)  评论(0编辑  收藏  举报