2014-09-06 54 views
1

分析是對的解決方法,在功能解析bash腳本參數bash的論點功能

運行命令: ./script.sh -t -r -e

腳本:

#!/bin/sh 
# parse argument function 
parse_args() { 
echo "$#" #<-- output: 0 
} 


# main 
echo "$#" #<-- output: 3 

# parsing arguments 
parse_args 
+0

我現在的'輸出0'的原因,但有沒有辦法做一個額外的功能參數解析? – Heinrich 2014-09-06 17:37:19

+0

在'parse_args'之後加上'$ @'。 – Cyrus 2014-09-06 17:45:22

+0

thx賽勒斯。解決方案:parse_args $ @ – Heinrich 2014-09-06 17:49:16

回答

5

$#計算出當前範圍內的參數數量。由於每個函數都有自己的範圍,並且您不會將任何參數傳遞給parse_args,因此$#將始終爲0。

爲了獲得期望的結果,改變最後一行:

parse_args "[email protected]" 

The special variable "[email protected]"擴展到當前(頂級)範圍爲單獨的字的位置參數。隨後他們被傳遞給parse_args的調用。

+0

很好的答案。還有很好的例子,你加入我的答案! – GhostCat 2017-08-16 19:10:13