本地变量:
作用域为整个bash进程
局部变量:
作用域为当前代码段
环境变量:
作用域为当前shell进程及其子进程
set export 变量名 定义一个变量,set可以省略
变量名称:
1、只能包含字母、数字和下划线,并且不能数字开头
2、不应该跟系统中已有的环境变量重名
3、最好做到见名知义
位置变量:
$1, $2,... $1表示第一个参数,$2表示第二个参数...
shift 剔除变量
变量替换:
a=123456456789
echo ${a:2} 显示结果:3456456789 从第二个数字开始显示
echo ${a:2:4} 显示结果:3456 从第二个数字开始,显示4个数字
echo ${a#123} 显示结果:456456789 删除头部数字,#后面跟要删除的头部数字
echo ${a#*6} 显示结果:456789
echo ${a##*6} 显示结果:789
echo ${a%6*} 显示结果:12345645
echo ${a%%6*} 显示结果:12345
变量替换不改变变量的值
特殊变量:
$? 上一个命令的执行状态返回值
程序执行,可能有两类返回值
程序执行结果
程序状态返回代码(0-255)
0:正确执行
1-255:错误执行,1,2,127系统预留
$# 是传给脚本的参数个数
$0 是读取脚本名的路径及文件名
$1 是传递给该shell脚本的第一个参数
$2 是传递给该shell脚本的第二个参数
$@ 是传给脚本的所有参数的列表
$* 是以一个单字符串显示所有向脚本传递的参数,与位置变量不同,参数可超过9个
$$ 是脚本运行的当前进程ID号
$? 是显示最后命令的退出状态,0表示没有错误,其他表示有错误
basename $0 提取脚本的名字
unset 变量名 撤销变量
set 查看当前shell中的变量
printenv或env或export 查看当前shell中的环境变量
变量名1=$变量名1:(路径或字符) 在变量1中增加括号里的内容