linux之位置參數

位置參數(Positional Parameters) 
--------------------------------------------------------------------------------
所謂的位置參數便是0,1,2,3,4,5,6,7,8,9...。使用時,用$0,$1,$2...。 
位置參數是當 script被載入時,後面所附加的參數。$0是本身,$1則爲第一個參數,$2爲第二個,依此類推。而當Positional Parameters被 function所使用時,它們會被暫時取代(下一節會介紹function)。 
例如以下這個script: 
#!/bin/sh 
Filename position 
echo $0 
echo $1 
執行時: 
[foxman@foxman bash]# ./position abc 
./position 
abc 
當位置參數超過兩位數時,有特別的方法來展開,稱爲Expansion。 
--------------------------------------------------------------------------------
特殊參數(Speical Parameters) 
這些符號,非常不人性,對新手來說很困擾。但上手後,會覺得方便無比,有些如果您看不懂的話,就--算了,不用浪費太多時間在上面。 
--------------------------------------------------------------------------------
星號 
將Positional Parameters合成一個參數,其間隔爲IFS內定參數的第一個字元(見內建變數一節)。 
例: 
#!/bin/sh 
starsig 
echo $* 
執行: 
[foxman@foxman bash]# starsig 

--------------------------------------------------------------------------------
at符號 
與*星號類同。不同之處在於不參照IFS。 
例: 
#!/bin/sh 
atsig 
echo $@ 
執行: 
[foxman@foxman bash]# atsig 

--------------------------------------------------------------------------------
井字號 
展開Positional parameters的數量。 
例: 
#!/bin/sh 
poundsig 
echo $# 
執行 
[foxman@foxman bash]# poundsig 

--------------------------------------------------------------------------------
問號 
最近執行的foreground pipeline的狀態。 
--------------------------------------------------------------------------------
減號 
最近執行的foreground pipeline的選項參數。 
--------------------------------------------------------------------------------
$ $ 
本身的Process ID。 
[foxman@foxman bash]# ps ax grep bash 
1635  p1    0:00 /bin/bash 
[foxman@foxman bash]# echo $$ 
1635 
--------------------------------------------------------------------------------
驚號 
最近執行背景命令的Process ID。 
--------------------------------------------------------------------------------
零 
在Positional Parameters一部份已經說明過了,是執行的shell script本身。但如果是用"bash -c",則$0被設爲第一個參數。 
[foxman@foxman bash]# echo $0 
/bin/bash 
--------------------------------------------------------------------------------
底線符號 
顯示出最後一個執行的命令。 
[foxman@foxman bash]# echo $_ 

bash 



1.$0, $1, $2,等等:位置參數,從命令行傳遞給腳本,或者是傳遞給函數.或者賦職給一個變量.

2.$#:命令行或者是位置參數的個數.

3.$*:所有的位置參數,被作爲一個單詞.注意:"$*"必須被""引用.

4.$@:與$*同義,但是每個參數都是一個獨立的""引用字串,這就意味着參數被完整地傳遞,並沒有被解釋和擴展.這也意味着,每個參數列表中的每個參數都被當成一個獨立的單詞.注意:"$@"必須被引用.

5.$-:傳遞給腳本的falg(使用set 命令).注意:這起初是ksh 的特徵,後來被引進到Bash 中,但不幸的是,在Bash 中它看上去也不能可靠的工作.使用它的一個可能的方法就是讓這個腳本進行自我測試(查看是否是交互的).

6.$!:在後臺運行的最後的工作的PID(進程ID).

7.$_:保存之前執行的命令的最後一個參數.

8.$?:命令,函數或者腳本本身的退出狀態

9.$$:腳本自身的進程ID.這個變量經常用來構造一個"unique"的臨時文件名.

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章