linux中$#,$0,$1,$2,$@,$*,$$,$?的含义

$# 是传给脚本的参数个数
$0 是脚本本身的文件名
$1 是脚本后接的第一个参数
$2 是脚本后接的第二个参数
$@ 是传给脚本的所有参数列表,"$1" "$2" "$3" … "$n",所有参数列表。如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。$@ 跟$*类似,但是可以当作数组用
$* 是以一个单字符串显示传给脚本的所有参数,"$1 $2 $3 … $n",所有参数列表。如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数,此选项参数可超过9个。
$$ 是脚本运行的当前进程ID号(ProcessID,即脚本运行的当前进程ID号)
$? 是最后运行命令的结束状态码,0表示没有错误,其他表示有错误
$! 最后运行的后台Process的PID(后台运行的最后一个进程的进程ID号)
$- 显示shell使用的当前选项,与set命令功能相同
$1~$n 添加到Shell的各参数值。$1是第1参数、$2是第2参数…。
转:https://my.oschina.net/u/3997182/blog/3071460
https://blog.csdn.net/helloxiaozhe/article/details/80940066