(我在这里看到了一些关于Bash特殊参数的问题.$*
在Bash手册和Google中搜索这些内容可能很困难.这个问题旨在成为这些问题的一般参考.)
Bash shell定义了许多"特殊参数"(这本身有点令人困惑,因为我们大多数人认为它们是"变量",而不是"参数").对它们的引用包括一个美元符号,后跟一些标点字符.
谷歌搜索由标点字符组成的字符串是众所周知的困难,例如,$?
在Bash参考手册中没有出现过.
如何查找有关特定Bash特殊参数的信息?
关于Bash特殊参数的文档:
$* $@ $# $? $- $$ $! $0 $_
可以在Bash参考手册中找到,特别是在第3.4.2节"特殊参数"中.如果您的系统上安装了bash文档,则可以键入
% info bash
然后搜索"特殊参数".
正如rici在评论中指出的那样,在info
命令中你也可以通过索引找到特殊参数:输入i
然后输入单个字符(不包括$
),然后输入.这不起作用?
,并且搜索!
首先找到不同的部分(键入,
以查找下一个条目工作).(在我应用补丁后,这仍然相当不错.)
这是不幸的,恕我直言,这部分涉及到这些参数不主导$
角色.(我刚刚提交了一个改变它的补丁.)
简要总结(但请阅读手册了解详情):
$*
:扩展到以...开头的位置参数$1
.
$@
:也扩展为位置参数,但用双引号括起来时表现不同.
$#
:扩展为十进制的位置参数数.
$?
:扩展到最新命令的退出状态.(类似于$status
csh和tcsh.)
$-
:扩展为当前选项标志.
$!
:扩展为最新后台命令的进程ID.
$0
:扩展为shell或脚本的名称.(注意$0
,与$1
et al 不同,它不是位置参数.)
$_
:最初设置为绝对路径名用于调用shell或shell脚本,稍后设置为上一个命令的最后一个参数.(还有更多;请参阅手册.)
更新:
从2014年2月26日发布的bash版本4.3开始,bash文档被注释为显示这些变量的全名.在4.2版中:
`#' Expands to the number of positional parameters in decimal.
在4.3版中:
`#' ($#) Expands to the number of positional parameters in decimal.