在編寫shell腳本時,爲了使腳步具有更大的靈活性,往往我們會在執行腳本時再去傳遞想要實現的參數,而不是在腳本中直接寫死參數變量,但我們在做參數傳遞時需要注意,外部傳入的參數變量不能放在function中進行判斷,否則參數傳遞會失效,如下,在test.sh腳本中,假設我們需要先判斷在執行腳本時是否傳入了參數,如果傳入了就將傳入的參數賦值給a並輸出,否則提示未傳入參數:
if [ -n "$1" ]; then
a=$1
echo "傳入的參數爲:$a"
else
echo "未傳入參數!"
fi
執行腳本
sh test.sh '我是傳入的參數1'
數據結果爲:
下面將腳本中的內容移植到function中
function main(){
if [ -n "$1" ]; then
a=$1
echo "傳入的參數爲:$a"
else
echo "未傳入參數!"
fi
}
main
此時再執行腳本
sh test.sh '我是傳入的參數1'
返回的結果爲:
這表明在進行自變量參數傳遞時需要避免將傳入的參數變量放置在函數中,建議將他們直接放在腳本頭部。