什么是特殊的美元符号 shell 变量?
在 Bash 中,似乎有几个变量持有特殊的、含义一致的值。例如,
./myprogram &; echo $!
将返回 myprogram
后台进程的 PID。我知道其他的,例如 $?
我认为它是当前的 TTY。还有其他人吗?
In Bash, there appear to be several variables which hold special, consistently-meaning values. For instance,
./myprogram &; echo $!
will return the PID of the process which backgrounded myprogram
. I know of others, such as $?
which I think is the current TTY. Are there others?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
$1
、$2
、$3
、... 是 位置参数。"$@"
是所有位置参数的类似数组的构造,{$1, $2, $3 ...}
。"$*"
是所有位置参数的 IFS 扩展,$1 $2 $3 ...
。$#
是位置参数的数量。$-
为 shell 设置的当前选项。$$
pid。$_
最近的参数(或启动后立即启动当前 shell 的命令的绝对路径)。$IFS
是(输入)字段分隔符。$?
是最近的前台管道退出状态。$!
是最近的后台命令的PID。$0
是 shell 或 shell 脚本的名称。上述大部分内容都可以在特殊参数下找到Bash 参考手册。 这里是 shell 设置的所有环境变量。
有关全面的索引,请参阅参考手册变量索引。
$1
,$2
,$3
, ... are the positional parameters."$@"
is an array-like construct of all positional parameters,{$1, $2, $3 ...}
."$*"
is the IFS expansion of all positional parameters,$1 $2 $3 ...
.$#
is the number of positional parameters.$-
current options set for the shell.$$
pid of the current shell (not subshell).$_
most recent parameter (or the abs path of the command to start the current shell immediately after startup).$IFS
is the (input) field separator.$?
is the most recent foreground pipeline exit status.$!
is the PID of the most recent background command.$0
is the name of the shell or shell script.Most of the above can be found under Special Parameters in the Bash Reference Manual. Here are all the environment variables set by the shell.
For a comprehensive index, please see the Reference Manual Variable Index.
$_
最后一个命令的最后一个参数$#
传递给当前脚本的参数数量$*
/$@
列表作为字符串/分隔列表传递给脚本的参数超出了我的想象。 Google 查找 bash 特殊变量。
$_
last argument of last command$#
number of arguments passed to current script$*
/$@
list of arguments passed to script as string / delimited listoff the top of my head. Google for bash special variables.
为了帮助理解
$#
、$0
和$1
、...、$n
的作用,我使用这个脚本:运行它会返回一个代表性输出:
To help understand what
$#
,$0
and$1
, ...,$n
do, I use this script:Running it returns a representative output:
注意一些例子; $0 可能包含一些引导路径以及程序名称。例如,将这两行脚本保存为 ./mytry.sh 并执行它。
输出:
这是当前(2016 年)版本的 Bash,通过 Slackware 14.2
Take care with some of the examples; $0 may include some leading path as well as the name of the program. Eg save this two line script as ./mytry.sh and the execute it.
Output:
This is on a current (year 2016) version of Bash, via Slackware 14.2