Shell的变量
1、变量
每个变量都存储一个值,值是可自定义的。
-
变量的规范:
1、命名只能使用英文字母,数字和下划线,首个字符不能以数字开头
2、不能使用bash里的关键字(可用help命令查看保留关键字)
3、=符号两边不能有空格,因为系统会误以为是命令 -
1.1 变量的定义
变量名不加美元符号
#数字开头的变量,报错
[root@VM_0_6_centos ~]# 1mydata=123
-bash: 1mydata=123: command not found
#=符号两边存在着空格
[root@VM_0_6_centos ~]# mydata= 123
-bash: 123: command not found
#正确的定义变量
[root@VM_0_6_centos DCBreakfast]# my_data=test
-
1.2 变量的使用$
推荐给所有变量加上花括号。变量名外面的花括号是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界,并且容易人们识别。这里用到echo关键字1
[root@VM_0_6_centos DCBreakfast]# echo my_data
my_data
[root@VM_0_6_centos DCBreakfast]# echo ${my_data}
test
使用 readonly 命令可以将变量定义为只读变量,只读变量的值不能被改变。
[root@VM_0_6_centos DCBreakfast]# onlyRead=test
[root@VM_0_6_centos DCBreakfast]# readonly onlyRead
[root@VM_0_6_centos DCBreakfast]# onlyRead=York
-bash: onlyRead: readonly variable
[root@VM_0_6_centos DCBreakfast]# unset my_data
2、变量的作用域
-
Shell有三种变量
- 在函数内部使用的变量,这叫做局部变量(local variable);
- 在当前 Shell 进程中使用的变量,这叫做全局变量(global variable);
- Shell进程间共享的变量,这叫做环境变量(environment variable)
-
2.1 Shell的局部变量local
Shell也支持自定义函数,但是和Java、C#、Python的局部变量有点不一样,Shell函数定义的变量可以作用于全局,除非定义变量时使用关键字local
[root@VM_0_6_centos ~]# vim myfun.sh #编写函数文件 #! /bin/bash #创建函数 function myfun(){ a=1 echo "没有关键字的a变量值是$a" local b=3 echo "local b=$b" } #调用函数 myfun [root@VM_0_6_centos ~]# chmod u+x myfun.sh [root@VM_0_6_centos ~]# . myfun.sh # 执行文件 没有关键字的a变量值是1 local b=3 [root@VM_0_6_centos ~]# echo $a # 全局变量,在当前进程输出a的值正常 1 [root@VM_0_6_centos ~]# echo $b # 局部变量