什么是特殊的美元符号shell变量?
在Bash中,似乎有几个变量持有特殊的,一致的含义值。 例如,
./myprogram &; echo $!
  将返回后台myprogram进程的PID。  我知道其他人,如$?  我认为这是目前的TTY。  有其他人吗? 
$1 , $2 , $3 ,...是位置参数。 "$@"是所有位置参数{$1, $2, $3 ...}的数组结构。 "$*"是所有位置参数的IFS扩展, $1 $2 $3 ... $#是位置参数的数量。 $-为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
