2013-06-18 87 views
0

我在bash函數的工作,我懷疑它目前有一個語法錯誤,代碼是這樣的:

for ((i=1; i<$#; i++)) 
do 
    GET_BLOCK "/$${!i}/" ... 
done 

什麼我想do是爲第一個參數運行GET_BLOCK「/ $ 1 /」,爲第二個參數運行「/ $ 2 /」,依此類推,直到沒有更多參數傳遞給腳本。我在做這個 對不對? (!PS我需要得到變量$ 1,$ 2 EXC的價值......)

+0

你不需要在問題標題中加入'SOLVED';接受答案標誌着問題已解決。 – chepner

回答

4

遍歷參數的位置更地道的方法是使用[email protected]

for p in "[email protected]"; do 
    GET_BLOCK "/$p/" 
done 

你想要的是什麼

for ((i=1; i<$#; i++)) 
do 
    GET_BLOCK "/${!i}" 
done 

但這是兩個不標準,比遍歷[email protected]直接不太清楚。

+0

感謝您的反饋!你是對的,但問題是我需要接受一個未知數量的參數。第一種解決方案只適用於一個參數嗎? –

+1

不,$ $擴展到所有位置參數的列表中,並且當引用時,每個參數都單獨引用,所以通過像'script'foo bar'「1 2」'這樣的調用,'p'被首先分配給'富酒吧',其次是'1 2'。 – chepner

+0

哦,很酷!我沒有意識到,謝謝:) –