<code> # 目前进程的参数个数。 @ 传递给当前进程的参数。置于双引号内,会展开为个别参数。 * 传递给当前进程的命令行参数,置于双括号内,展开时为一单独参数。 - (连字号),在引用时给的Shell 的选项。 ? 前一命令的退出状态。 $ shell的PID。$$也可在shell脚本中用来建立唯一确定的变量名,这是根据shell的进程编号建立的文件名,多半都是临时的。 echo $$ 显示shell的进程ID 0(零) shell程序的名字。 ! 最近一个后台命令的PID。可以此方式存储进程编号,然后通过wait命令同步。 HOME 主目录。 IFS 内部的字段分隔符,一般为制表符、空格、以及换行符。 LANG 当前locale的默认名称 LC_ALL 当前locale的名称。会覆盖LANG与其他LC_*变量。 LC_CTYPE 在模式匹配期间,用来确定字符类别的当前locale名称。 LINENO 刚执行过的行在脚本或函数内的行编号。 NLSPATH 在$LC_MESSAGES(XSI)所给定的信息语言里,信息目录的位置。 PATH 命令查找的路径。 PPID 父进程的进程编号。 PS1 主要的命令提示字符串,默认为“$”。 PS2 行继续提示字符串默认">"。 PS4 以set -x设置的执行跟踪的提示字符串,默认为“+”。 PWD 当前工作目录。</code>
对于 *NIX 系统而言,每一条命令,不管是内置的,SHELL 函数还是外置的,当它退出时,都 会返回一个小整数给引用它的程序,这就是程序退出状态 ( exit status ).
一般来讲,退出状态 0 表示正常执行,没有遭遇任何问题。其他非零的状态码均表示失败。
在 shell 中,可以使用 $? 来访问最后一个程序的退出状态。
下面是 POSIX 的结束状态:
退出状态码 | 含义 |
0 | 命令成功退出 |
> 0 | 在重定向或者单词展开期间(~、变量、命令、算术展开以及单词切割)失败。 |
1 – 125 | 命令不成功退出。特定的退出值的含义,有各个命令自行定义。 |
126 | 命令找到了,但是文件无法执行。 |
127 | 命令没有找到 |
> 128 | 命令因收到信号而死亡。 |
POSIX 没有定义 128 的状态码,仅要求它表示某种错误。因为只有低位的 8 个位会返回给父进程,因此,所有大于 255 的退出状态都会被对 256 取模,然后将其结果作为实际的 exit status code.
在 shell 脚本中,可以使用 exit integer_value 这种方式声明退出状态。如果没有显式地声明,则会以最后一个程序的退出状态作为当前脚本的退出状态。也可以使用 exit $? 来表示。