shell的内部变量与环境变量相似,也是在shell执行前就定义的变量。所不同的是,用户只能根据shell的定义来使用这些变量,而不能重新定义他们。所有预定义变量都由$和另一个符号组成的,常用的shell预定义变量有:
$# | 位置参数的数量 |
$* | 所有位置参数的内容 |
$? | 命令执行后返回的状态。 |
$$ | 当前进程的进程号 |
$! | 后台运行的最后一个进程号 |
$0 当前执行的进程名
$@ 与$*相同,但是使用时加引号,并在引号中返回每个参数
$ - 显示shell使用的当前选项,与set命令功能相同
其中,$?用于检查上一个命令是否执行正确(在linux中,命令推出状态为0,表示该命令正确执行,任何非0值表示命令出错)。
$$变量最常见的用途是做暂存文件的名字,以保证暂存的文件不会重复。
$1, $2, ...是位置参数,$1替换程序文件中的第一个参数,$2替换第二个,其他依次类推。
$0是一个特殊的变量,其内容是当前shell程序的文件名,所以$0不是位置参数。