Shell的变量、常量
变量
变量就是程序运行过程中其值可以发生改变的量
变量的命名规范
应该见名知意,同时遵循如下规则
- 以字母或下划线开头,剩下的部分可以是:字母、数字、下划线
最好遵循下述规范:- 以字母开头
- 使用中划线或者下划线做单词的连接 high_student
- 同类型的用数字区分 student1 student2
- 对于文件名的命名最好在末尾加上拓展名 score_x.txt score_shi.sh
- 不要带有空格、?、*等特殊字符
- 不能使用bash中的关键字,例如if,for,while,do等
- 不要和系统环境变量冲突
变量定义
变量名=值
注意:等号左右两边不能有空格!
变量引用
$变量名
如果是打印百分比,建议使用${变量名}%
代码和运行结果:
变量删除
unset 变量名
变量的使用场景
场景一:直接赋值
变量名=变量值
场景二:脚本运行传值
从调用脚本时传入的位置参数获取变量值:./a1.sh a1 a2 a3
需要用到$ n获取第n个位置参数值,超过10需要用${n}
${0}代表第一行文字,从1开始传参,如果不用{}括住参数,如$12,就是 1 + 2 拼接,也就是 a + 2 拼接,也就是 a 2 , , 超出部分也不会赋值传递,所以 m , l 没有传递。 1+2拼接,也就是a+2拼接,也就是a2,,超出部分也不会赋值传递,所以m,l没有传递。 1+2拼接,也就是a+2拼接,也就是a2,,超出部分也不会赋值传递,所以m,l没有传递。 ?表示上一个命令的结果,$*表示全部
代码展示和运行结果:
场景三:用户交互传值
read接收用户的输入,即从键盘读入变量值
格式:
- read 变量名
- read -p "提示信息: " 变量名
- read -t 5 -p "提示信息: " 变量名
-t指定秒数 - read -n 2 变量名
-n读取的字符个数
echo输出
需要调用$变量
代码和运行结果:
常量
定义
readonly 变量
删除
需要下载gdb
yum install gdb
代码展示:
[root@master ~]# cat << EOF | gdb
> attach $$
> call unbind_variable("x")
> detach
> EOF
运行结果: