Bourne Shell 中预定义的特殊变量

几个变量有特殊的含义。 以下变量只能由 Bourne Shell 设置:


描述
$@ 展开位置参数,以 $1开头。 每个参数都用空格分隔。

如果用双引号(" ")括起 $@, 则 Shell 认为每个位置参数是独立的字符串。 如果不存在位置参数,那么 Bourne Shell 将语句展开成一个没有引起的空字符串。

$* 展开位置参数,以 $1开头。 Shell 使用 IFS 变量值的第一个字符分隔每个参数。

如果使用双引号(" ")括起 $*,那么 Shell 在双引号中包含位置参数值。 每个值都用 IFS 变量的第一个字符分隔。

$# 指定传递给 Shell 的位置参数的数目,不计数 Shell 步骤名称本身。 这样 $# 变量产生设置的最大编号位置参数的数目。 此变量的一个主要使用是检查存在要求的自变量数目。 只有位置参数 $0$9 可以通过 Shell 访问。
$? 指定上次执行命令的退出值。 其值是一个十进制字符串。 大多数命令返回值 0 以表示成功完成。 Shell 自己返回 $? 变量的当前值作为其退出值。
$$ 标识当前进程的进程号。 因为进程号在所有现有字符串中唯一,所以此字符串经常用于生成临时文件的唯一名称。
以下示例说明了在目录中创建临时文件的推荐方法,该方法仅用于上述目的:
temp=/tmp/$$
ls >$temp
.
.
.
rm $temp
$! 指定上一个使用 & 终端符在后台运行的进程的进程号。
$- 由当前在 Shell 中设置的执行标志的名称组成的字符串。