如何查找有关bash特殊参数的信息($*$ @ $#$?$ - $$ $!$ 0 $ _)?

 C1_VISION 发布于 2023-02-13 23:52

(我在这里看到了一些关于Bash特殊参数的问题.$*在Bash手册和Google中搜索这些内容可能很困难.这个问题旨在成为这些问题的一般参考.)

Bash shell定义了许多"特殊参数"(这本身有点令人困惑,因为我们大多数人认为它们是"变量",而不是"参数").对它们的引用包括一个美元符号,后跟一些标点字符.

谷歌搜索由标点字符组成的字符串是众所周知的困难,例如,$?在Bash参考手册中没有出现过.

如何查找有关特定Bash特殊参数的信息?

1 个回答
  • 关于Bash特殊参数的文档:

    $* $@ $# $? $- $$ $! $0 $_
    

    可以在Bash参考手册中找到,特别是在第3.4.2节"特殊参数"中.如果您的系统上安装了bash文档,则可以键入

    % info bash
    

    然后搜索"特殊参数".

    正如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.
    

    在4.3版中:

    `#'
         ($#) Expands to the number of positional parameters in decimal.
    

    2023-02-14 00:18 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有