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