什么是特殊的美元符号shell变量?

在Bash中,似乎有几个变量持有特殊的,一致的含义值。 例如,

./myprogram &; echo $!

将返回后台myprogram进程的PID。 我知道其他人,如$? 我认为这是目前的TTY。 有其他人吗?


  • $1$2$3 ,...是位置参数。
  • "$@"是所有位置参数{$1, $2, $3 ...}的数组结构。
  • "$*"是所有位置参数的IFS扩展, $1 $2 $3 ...
  • $#是位置参数的数量。
  • $-为shell设置的当前选项。
  • 当前shell(不是子shell)的$$ pid。
  • $_最新参数(或启动后立即启动当前shell的命令的abs路径)。
  • $IFS是(输入)字段分隔符。
  • $? 是最近的前台管道退出状态。
  • $! 是最近的背景命令的PID。
  • $0是shell或shell脚本的名称。
  • 上述大部分内容可以在Bash参考手册中的特殊参数下找到。 有所有由shell设置的环境变量。

    有关综合指数,请参阅参考手册变量索引。


  • $_最后一个命令的最后一个参数
  • $#传递给当前脚本的参数数量
  • $* / $@作为字符串/分隔列表传递给脚本的参数列表
  • 离开我的头顶。 谷歌为bash特殊变量。


    为了帮助理解$#$0$1 ,..., $n做什么,我使用这个脚本:

    #!/bin/bash
    
    for ((i=0; i<=$#; i++)); do
      echo "parameter $i --> ${!i}"
    done
    

    运行它将返回一个代表性输出:

    $ ./myparams.sh "hello" "how are you" "i am fine"
    parameter 0 --> myparams.sh
    parameter 1 --> hello
    parameter 2 --> how are you
    parameter 3 --> i am fine
    
    链接地址: http://www.djcxy.com/p/25703.html

    上一篇: What are the special dollar sign shell variables?

    下一篇: echo that outputs to stderr