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
[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.sh
func_call_define.sh func_define.sh return2.sh
func_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 \$$var1
jason
提示: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等
公众号
点个在看你最好看
收录于合集 #一站式教程
122个上一篇大厂都在用的Linux云计算学习路线,偷学到了!下一篇shellscript(10) - 练习题(1)