美文网首页
linux中shell变量$#,$@,$0,$1,$2的含义解释

linux中shell变量$#,$@,$0,$1,$2的含义解释

作者: 阳光_8af8 | 来源:发表于2018-06-14 14:32 被阅读0次

变量说明:
$$
Shell本身的PID(ProcessID)

$!
Shell最后运行的后台Process的PID

$?
最后运行的命令的结束代码(返回值)

$-
使用Set命令设定的Flag一览

$*
所有参数列表。如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。

$@
所有参数列表。如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。

$#
添加到Shell的参数个数

$0
Shell本身的文件名

$1~$n
添加到Shell的各参数值。$1是第1参数、$2是第2参数…。

举例:
···bash

!/bin/bash

printf "The complete list is %s\n" "$$"
printf "The complete list is %s\n" "$!"
printf "The complete list is %s\n" "$?"
printf "The complete list is %s\n" "$*"
printf "The complete list is %s\n" "$@"
printf "The complete list is %s\n" "$#"
printf "The complete list is %s\n" "$0"
printf "The complete list is %s\n" "$1"
printf "The complete list is %s\n" "$2
···

运行结果: sh test.sh 123456 QQ

The complete list is 24249
The complete list is
The complete list is 0
The complete list is 123456 QQ
The complete list is 123456
The complete list is QQ
The complete list is 2
The complete list is test.sh
The complete list is 123456
The complete list is QQ

注意:使用了$? 专属变脸来保存上个执行的命令的退出状态码。你必须在要查看的命令之后马上查看或使用$?变量。它的值会变成shell中执行的最后一条命令的退出状态码,例如:
[root@ZX-DSI bin]# pwd
/usr/local/rss/bin
[root@ZX-DSI bin]# echo $?
0

Linux 状态码的意义
0 命令成功结束
1 通用未知错误
2 误用shell命令
126 命令不可执行
127 没找到命令
128 无效退出参数
128+x Linux 信号x的严重错误
130 Linux 信号2 的严重错误,即命令通过SIGINT(Ctrl+C)终止
255 退出状态码越界

默认状态下,shell脚本会以脚本中的最后一个命令作为退出状态码。所以一般情况下,在shell脚本中以 exit 命令的值来指定shell命令的退出状态码。但是退出状态码的范围是 0 ~ 255, 退出值超出这个范围将会执行取模运算。例如通过exit 命令指定返回值为300,经过取模运算,那么退出状态码就为44.

相关文章

网友评论

      本文标题:linux中shell变量$#,$@,$0,$1,$2的含义解释

      本文链接:https://www.haomeiwen.com/subject/qolyeftx.html