What are the special dollar sign shell variables?

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?


  • $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. There are all the environment variables set by the shell.

    For a comprehensive index, please see the Reference Manual Variable Index.


  • $_ last argument of last command
  • $# number of arguments passed to current script
  • $* / $@ list of arguments passed to script as string / delimited list
  • off the top of my head. Google for bash special variables.


    To help understand what do $# , $0 and $1 , ..., $n do, I use this script:

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

    Running it returns a representative output:

    $ ./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/25704.html

    上一篇: C中的stty RAW控制台

    下一篇: 什么是特殊的美元符号shell变量?