$@與$*的不同之處
$*: 把我們傳遞給腳本的參數全部合為一個字節,當成一個字符串或者參數來使用。
$@: 把我們傳遞給腳本的所有參數,每個參數都為獨立字符串,當我們用 \((n) 來調用的時候, 輸入參數的位置為第幾個,那我們就用用\)n來調用第幾個,一對應。
下面我們用代碼來看一下這兩個的區別:
創建一個簡單的腳本讓他輸出我們輸入的多個參數:” $* ”
并且調用自腳本,傳給他一個” $@ “的參數。
然后再子腳本中寫腳本調用并輸出3.log(父腳本)” $1 “,也就是第一個參數。
運行腳本3.log 輸入3個參數分別為a;b;c看運行結果
有結果可以看出,子程序在傳入” $@ “后,調用” $1 “,只取到了輸入的第一個參數的內容,說明多個參數并沒有被變為一個字符串。
接下來我們看一下” $* “的調用
4.log這個子程序我們不變。只把3.log中,自腳本調用的參數格式改為” $* “看看結果會如何
在4.log中,我們輸出的還是” $1 “,而這次把我們輸入的所有參數都顯示了出來。說明我們輸入的所有參數被當成一個參數來使用了。
希望通過這個小實驗讓大家了解二者的區別。
原創文章,作者:phosphor,如若轉載,請注明出處:http://www.www58058.com/77690