Linux中變量$#,$@,$0,$1,$2,$*,$$,$?的含義
發(fā)現(xiàn)寫腳本的時(shí)候經(jīng)常會(huì)傳一些參數(shù)進(jìn)去,比如我們安裝腳本,輸入版本參數(shù)sh nginx_install_sh 1.2.9 ,通過(guò)我們傳入的1.2.9我們腳本就可以單獨(dú)去下載1.2.9的安裝包。下邊針對(duì)這些常用的變量做一個(gè)簡(jiǎn)單說(shuō)明:
$# 是傳給腳本的參數(shù)個(gè)數(shù)
$0 是腳本本身的名字
$1 是傳遞給該shell腳本的第一個(gè)參數(shù)
$2 是傳遞給該shell腳本的第二個(gè)參數(shù)
$@ 是傳給腳本的所有參數(shù)的列表 (將參數(shù)列表單一輸出)
$* 是以一個(gè)單字符串顯示所有向腳本傳遞的參數(shù),與位置變量不同,參數(shù)可超過(guò)9個(gè)。(將參數(shù)列表整體輸出)
$$ 是腳本運(yùn)行的當(dāng)前進(jìn)程ID號(hào)
$? 是顯示最后命令的退出狀態(tài),echo 0表示沒有錯(cuò)誤,其他表示有錯(cuò)誤
這里做一個(gè)寫一個(gè)腳本,大家看下輸出就都明白了:
[root@saltstack-node2 temp]# cat test.sh
#!/bin/bash
echo "number:$#"
echo "scname:$0"
echo "first :$1"
echo "second:$2"
echo "argume:$@"
echo "show parm list:$*"
echo "show process id:$$"
echo "show precomm stat: $?"
[root@saltstack-node2 temp]# sh test.sh
number:0
scname:test.sh
first :
second:
argume:
show parm list:
show process id:2698
show precomm stat: 0
[root@saltstack-node2 temp]# sh test.sh 123
number:1
scname:test.sh
first :123
second:
argume:123
show parm list:123
show process id:2699
show precomm stat: 0
[root@saltstack-node2 temp]# sh test.sh 123 456
number:2
scname:test.sh
first :123
second:456
argume:123 456
show parm list:123 456
show process id:2700
show precomm stat: 0
[root@saltstack-node2 temp]#