bash有四种类型的变量,分别是用户自定义变量、环境变量、位置参数变量、预定义变量
用户自定义变量
Shell编程中,无需事先声明变量,变量名的命名遵循如下规则:
1)首个字符必须为字母(a-z,A-Z)
2)中间不能有空格,可以使用下划线
3)不能使用标点符号
4)不能使用bash中的关键字(help可查看保留关键字)
关于自定义变量,还有几点补充:
1)bash变量值默认类型都是字符串,若要进行数值运算,则必须指定变量类型为数值型
2)变量值中有空格,用单引号包括
3)变量值中可以使用转义符
4)若需要增加变量的值,则可进行变量值的叠加,变量需要用双引号"$变量名"或${变量名}包含
5)若要把命令的结果作为变量值赋给变量,使用反引号或者$()包含命令
6)环境变量建议大写,便于与其他变量区分
变量的定义与使用
变量定义
用户可以按照下面语法规则定义自己的变量
变量名=变量值,"="左右两侧不能有空格,如name=zhangsan
变量调用
$变量名,所有类型的变量都可以以这种方式调用
变量叠加
"$变量名"附加内容 或 ${变量名}附加内容
变量查看
set 查看所有类型的的变量
变量删除
unset 变量名
环境变量
用户自定义的变量只在当前的Shell中生效,而环境变量会在当前Shell及其所有的子Shell中生效。如果将环境变量写入相应的配置文件,则该环境变量在所有的Shell中生效
声明环境变量
export 变量名=变量值
export 变量,将普通的变量声明为环境变量
查询环境变量
env 查询环境变量的专有命令,set命令时查询所有类型的变量
删除环境变量
unset 变量名
位置参数变量
位置参数变量 |
作用 |
$n |
n为数字,$0代表命令本身,$1~$9代表第一个刀第九个参数,十以上的参数需要用大括号包含,如${10} |
$* |
该变量代表命令行中的所有参数,$*会将所有的参数当做一个整体 |
$@ |
该变量也代表命令行中的所有参数,$@会把每个参数区分对待 |
$# |
该变量代表命令行中所有参数的个数 |
保存脚本退出,在命令行执行脚本,并输入参数
预定义变量
预定义变量 |
作用 |
$? |
最后一次执行命令的返回状态,如果这个变量值为0,证明上一个命令正确执行;如果这个变量值非0(具体是哪个数,由命令自己决定),则证明上一个命令执行不正确 |
$$ |
当前进程的进程号(PID) |
$! |
后台运行的最后一个进程的进程号(PID) |