我在bash函數的工作,我懷疑它目前有一個語法錯誤,代碼是這樣的:
for ((i=1; i<$#; i++))
do
GET_BLOCK "/$${!i}/" ...
done
什麼我想do是爲第一個參數運行GET_BLOCK「/ $ 1 /」,爲第二個參數運行「/ $ 2 /」,依此類推,直到沒有更多參數傳遞給腳本。我在做這個 對不對? (!PS我需要得到變量$ 1,$ 2 EXC的價值......)
我在bash函數的工作,我懷疑它目前有一個語法錯誤,代碼是這樣的:
for ((i=1; i<$#; i++))
do
GET_BLOCK "/$${!i}/" ...
done
什麼我想do是爲第一個參數運行GET_BLOCK「/ $ 1 /」,爲第二個參數運行「/ $ 2 /」,依此類推,直到沒有更多參數傳遞給腳本。我在做這個 對不對? (!PS我需要得到變量$ 1,$ 2 EXC的價值......)
遍歷參數的位置更地道的方法是使用[email protected]
:
for p in "[email protected]"; do
GET_BLOCK "/$p/"
done
你想要的是什麼
for ((i=1; i<$#; i++))
do
GET_BLOCK "/${!i}"
done
但這是兩個不標準,比遍歷[email protected]
直接不太清楚。
感謝您的反饋!你是對的,但問題是我需要接受一個未知數量的參數。第一種解決方案只適用於一個參數嗎? –
不,$ $擴展到所有位置參數的列表中,並且當引用時,每個參數都單獨引用,所以通過像'script'foo bar'「1 2」'這樣的調用,'p'被首先分配給'富酒吧',其次是'1 2'。 – chepner
哦,很酷!我沒有意識到,謝謝:) –
你不需要在問題標題中加入'SOLVED';接受答案標誌着問題已解決。 – chepner