Shell–基础–02–变量
1、定义变量
变量名=值
k=v1
定义变量k,值为v1
1.1、注意
变量名和等号之间不能有空格
1.2、命名规则
- 只能使用英文字母,数字和下划线
- 首个字符不能以数字开头
- 中间不能有空格,可以使用下划线_。
- 不能使用标点符号。
- 不能使用bash里的关键字(可用help命令查看保留关键字)。
1.2.1、有效的变量命名
RUNOOB
LD_LIBRARY_PATH
_var
var2
1.2.2、无效的变量命名
#首个字符不能以数字开头
11var=123
# 不能使用bash里的关键字
user*name=runoob
2、变量赋值
2.1、直接赋值
k=v1
![在这里插入图片描述](https://img-blog.csdnimg.cn/399e7fea03344e108a1907e9bcd069b2.png#pic_center)
2.2、用语句给变量赋值
for file in `ls /etc`
或
for file in $(ls /etc)
以上语句将 /etc 下目录的文件名循环出来。
3、使用变量
使用一个定义过的变量,只要在变量名前面加美元符号即可,如:
k="vv"
echo $k
echo ${k}
![在这里插入图片描述](https://img-blog.csdnimg.cn/f801a175cb11484bb6df6b751f8fe79b.png#pic_center)
变量名的花括号是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界,比如下面这种情况:
echo ${k}1
echo $k1
![在这里插入图片描述](https://img-blog.csdnimg.cn/cbfc041274234a879cdee0e08ffcda43.png#pic_center)
如果不给k变量加花括号、,解释器就会把$k1当成一个变量(其值为空)
4、只读变量
使用 readonly 命令可以将变量定义为只读变量,只读变量的值不能被改变。
下面的例子尝试更改只读变量,结果报错
k1="1111"
readonly k1
k1="222"
![在这里插入图片描述](https://img-blog.csdnimg.cn/7e522d573608409597d392363670d943.png#pic_center)
5、删除变量
语法
unset variable_name
注意
- 变量被删除后不能再次使用。
- unset 命令不能删除只读变量。
测试–变量被删除后不能再次使用
k2="222"
unset k2
echo $k2
![在这里插入图片描述](https://img-blog.csdnimg.cn/d1efc804225c4d609a6aeca2ee730be4.png#pic_center)
测试–unset 命令不能删除只读变量。
k3="333"
readonly k3
unset k3
echo $k3
![在这里插入图片描述](https://img-blog.csdnimg.cn/81cf71239e58467b855853e78ebe18f3.png#pic_center)
6、变量类型
运行shell时,会同时存在三种变量
6.1、局部变量
- 局部变量在脚本或命令中定义
- 仅在当前shell实例中有效,其他shell启动的程序不能访问局部变量。
6.2、环境变量
所有的程序,包括shell启动的程序,都能访问环境变量,有些程序需要环境变量来保证其正常运行。
必要的时候shell脚本也可以定义环境变量。
6.3、shell变量
shell变量是由shell程序设置的特殊变量。
shell变量中有一部分是环境变量,有一部分是局部变量,这些变量保证了shell的正常运行