特殊的shell变量:
$0
获取当前执行的shell脚本的文件名
$n
获取当前执行的shell脚本的第n个参数值,n=1..9
$*
获取当前shell的所有参数 “
1
2 $3 …,受IFS控制
$#
获取当前shell命令行中参数的总个数
$$
获取当前shell的进程号(PID)
$!
Shell最后运行的后台Process的PID
$?
获取执行的上一个指令的返回值(0 为成功, 非零为失败)
$@
这个程序的所有参数 “
1''“
2″ “$3″ “…”,不受IFS控制
注:
IFS: IFS(Internal Field Seperator)在Linux的shell中预设的分隔符,用来把command line分解成word(字段)。IFS可以是White Space(空白键)、Tab( 表格键)、Enter( 回车键)中的一个或几个。
$
* 和 $
@ 的区别:
$*
和$@
都表示传递给函数或脚本的所有参数,不被双引号(” “)包含时,都以"$1" "$2" … "$n"
的形式输出所有参数。
但是当它们被双引号(” “)包含时,”$*
” 会将所有的参数作为一个整体,以"$1 $2 … $n"
的形式输出所有参数;”$@
” 会将各个参数分开,以$1" "$2" … "$n"
的形式输出所有参数。