POSIX内置Shell变量

shell脚本 struggling 1331次浏览 1个评论
<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 $? 来表示。


DevOps-田飞雨 》》转载请注明源地址
喜欢 (1)or分享 (0)
发表我的评论
取消评论
*

表情 贴图 加粗 链接 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(1)个小伙伴在吐槽
  1. 好文章,内容文风幽默.禁止此消息:nolinkok@163.com 肉牛 http://www.xmten.com/
    匿名2015-05-07 14:12 回复