$0
表示所執行程序的路徑名。
[huey@huey-K42JE ~]$ ll ~/bin total 4 -rwxrwxr-x 1 huey huey 21 Oct 24 14:39 hello [huey@huey-K42JE ~]$ cat ~/bin/hello #!/bin/bashecho '$0:' $0 [huey@huey-K42JE ~]$ hello /home/huey/bin/hello [huey@huey-K42JE ~]$
?
$n
表示傳遞給腳本或函數的第 n 個參數,如 $1 表示第一個參數。
[huey@huey-K42JE ~]$ ll ~/bin total 4 -rwxrwxr-x 1 huey huey 63 Oct 24 14:52 hello [huey@huey-K42JE ~]$ cat ~/bin/hello #!/bin/bashecho '$1:' $1 echo '$10:' $10 echo '${10}:' ${10} [huey@huey-K42JE ~]$ hello a b c d e f g h i j $1: a $10: a0 ${10}: j
注意:第 10 個參數,用 ${10} 表示,而不是 $10。
?
$#
表示傳遞給腳本或函數的參數個數。
[huey@huey-K42JE ~]$ ll ~/bin total 4 -rwxrwxr-x 1 huey huey 27 Oct 24 15:00 hello [huey@huey-K42JE ~]$ cat ~/bin/hello #!/bin/bashecho '$#:' $# [huey@huey-K42JE ~]$ hello $#: 0 [huey@huey-K42JE ~]$ hello a b c $#: 3
?
$*
表示傳遞給腳本或函數的所有參數。當包括在雙引號內時,擴展為雙引號引用的有全部位置參數構成的字符串,每個位置參數以 IFS 變量的第一個字符(默認情況下為空格)間隔開。
?
$@
表示傳遞給腳本或函數的所有參數。當包括在雙引號內時,將每個位置參數擴展為雙引號引用的單獨單詞。
[huey@huey-K42JE ~]$ ll ~/bin total 4 -rwxrwxr-x 1 huey huey 284 Oct 24 15:21 hello [huey@huey-K42JE ~]$ cat ~/bin/hello #!/bin/bashecho 'Print each param from $*:' for var in $* doecho $var doneecho 'Print each param from $@:' for var in $@ doecho $var doneecho 'Print each param from "$*":' for var in "$*" doecho $var doneecho 'Print each param from "$@":' for var in "$@" doecho $var done [huey@huey-K42JE ~]$ hello a b c Print each param from $*: a b c Print each param from $@: a b c Print each param from "$*": a b c Print each param from "$@": a b c
?
$?
表示上個命令退出的狀態或函數的返回值。
?
$$
表示當前 Shell 的進程 ID。
[huey@huey-K42JE cmdline]$ psPID TTY TIME CMD 17379 pts/3 00:00:00 bash 18370 pts/3 00:00:00 ps [huey@huey-K42JE cmdline]$ echo $$ 17379
?