shell变量
1、前言
记录一下shell脚本的基础知识点,方便自己日后回顾,也可以给有需要的人提供帮助。每个目录都是知识点,大家可以按照目录逐步浏览,也可以点击目录跳转到所需部分。
2、shell变量
2.1 什么是shell变量
shell 变量是用于存储数据的容器
2.2 定义shell变量(等号两侧不能有空格)
shell_name="var" # 普通变量
export GLOBAL_VAR="global" # 环境变量(子进程可访问)
2.3 shell变量使用
echo $shell_name # 直接引用
echo "${shell_name}" # 推荐写法(避免歧义)
2.4 shell变量命名规则
1. 只包含字母、数字和下划线: 变量名可以包含字母(大小写敏感)、数字和下划线 _,不能包含其他特殊字符; 2. 不能以数字开头: 变量名不能以数字开头,但可以包含数字; 3. 避免使用 Shell 关键字: 不要使用Shell的关键字(例如 if、then、else、fi、for、while 等)作为变量名,以免引起混淆; 4. 使用大写字母表示常量: 习惯上,常量的变量名通常使用大写字母,例如 PI=3.14; 5. 避免使用特殊符号: 尽量避免在变量名中使用特殊符号,因为它们可能与 Shell 的语法产生冲突; 6. 避免使用空格: 变量名中不应该包含空格,因为空格通常用于分隔命令和参数。 |
2.5 变量类型
2.5.1 环境变量(全局变量)
全局生效的变量,可被当前 Shell 及其子进程(如子 Shell、脚本)访问。
2.5.2 局部变量
生效范围为当前shell进程。对当前shell之外的其它shell进程,包括当前shell的子shell进程均无效。
2.5.3 特殊变量
$0 | 当前脚本名称 |
---|---|
$n | 脚本或函数的前9个参数 |
$# | 传递给脚本或函数的参数个数 |
$@ | 所有参数列表(每个参数独立) |
$* | 所有参数合并为一个字符串(用空格分隔) |
$? | 上一条命令的退出状态(0=成功,非0=失败) |
$$ | 当前 Shell 进程的 PID |
$! | 最后一个后台进程的 PID |
$_ | 上一个命令的最后一个参数 |
$@ vs $* 的区别
$@:保持参数独立性,等价于 "$1" "$2" ... "$n"。 $*:合并所有参数为一个字符串,等价于 "$1 $2 ... $n"。 |
2.5.4 只读变量
使用 readonly 命令可以将变量定义为只读变量,只读变量的值不能被改变。 |
readonly myUrl
2.6增删查改
2.6.1 增加变量
name=叶子
echo $name
2.6.2删除变量
unset name
echo $name
2.6.3 查找变量
set
加管道符查找 |
set | grep bash
2.6.4 改变变量
第一种写法 |
name=叶子12
echo $name
第二种写法 |
name=${name}34
echo $name
2.7 交互式变量
read -p "请输入变量名:" var
请输入变量名:叶子
echo $var
3、总结
以上就是shell变量的一些基础知识了,浏览过程中,如若发现错误,欢迎大家指正,有 问题的欢迎评论区留言或者私信。最后,如果大家觉得有所帮助,可以点一下赞,谢谢 大家!祝大家天天开心,顺遂无虞! |