回答
試試這個:
#!/bin/bash
declare -A conect
for i in "[email protected]"
do
echo $i
conect[$i]=0
done
echo ${#conect[@]}
說明:
- 的關聯陣列(即索引可能非數字)必須聲明爲
declare -A
。如果索引保證爲數字,則不需要此操作。 ${#foo}
是字符串值變量的長度(字符數)${#conect[@]}
是數組的長度(元素數量)。- 正如其他人指出的那樣,
"[email protected]"
比$*
更好,特別是當(引用的)參數可能包含空格時。
它的工作!非常感謝! – clausdia
$ *創建IFS分開的一個單獨的參數。這就是爲什麼。使用$ @
What is the difference between "[email protected]" and "$*" in Bash?
編輯 其實,通過@that_other_guy和@Ruud_Helderman(感謝你們)所指出的,我說的是不完全正確。
首先是Mea Culpa,因爲這個問題不是完整的解決方案。
但它讓我感到奇怪,所以這裏是正確的方法。 IFS的差異是一個事實。但是,這只是問題如果你引用「$ *」或「$ @」
for i in "$*"
do
echo $i
done
將輸出在同一條線上的每個參數而
for i in "[email protected]"
do
echo $i
done
會做一次一個。
'f(){for i in $ *;確實迴應「循環」;完成; }; f 1 2 3'表明這是虛假的 –
@KuuAku很好的建議,但不是OP問題的原因;注意''* *'周圍沒有引號。看到這個答案中的例子:http://stackoverflow.com/questions/2761723/what-is-the-difference-between-and-in-shell-scripts#2761739 –
您應該使用數組:
for i in "[email protected]"
優秀的建議,但不是OP的問題的原因;注意''* *'周圍沒有引號。請參閱此答案中的示例:http://stackoverflow.com/questions/2761723/what-is-the-difference-between-and-in-shell-scripts#2761739 –
好點。謝謝@RuudHelderman –
- 1. 初始化的數組構造函數做了什麼?
- 2. 這個初始化做了什麼? = {}
- 3. 我在加載這個js數組時做了什麼錯誤?
- 4. 編譯時初始化數組錯誤
- 5. 我做了什麼錯誤?
- 6. 我在做下面的數組操作時做錯了什麼?
- 7. 我做錯了什麼? (C++數組)
- 8. PHP初學者 - 我做錯了什麼?
- 9. 我收到「無效的初始化程序」,我做錯了什麼?
- 10. 初始化多維數組:{0}與{{{0}}}
- 11. 我在什麼時區初始化QDateTime?
- 12. VBO - 我可以在初始化時做些什麼?
- 13. 錯誤在初始化數組變量
- 14. 這裏正在做什麼樣的數組初始化(Basic Java)?
- 15. 初始化數組時初始化System.AccessViolationException
- 16. 使用0初始化的數組
- 17. 我在matplotlib中做了什麼錯誤?
- 18. 我在angularjs上做了什麼錯誤?
- 19. 我在JavaScript中做了什麼錯誤?
- 20. 組成初始化錯誤
- 21. char數組初始化爲'\ 0'會發生什麼?
- 22. 我在做什麼錯了?
- 23. array_map簡化數組,我做錯了什麼?
- 24. 我在做角度設置socket.io時做了什麼錯誤
- 25. 13行錯誤(***)我做錯了什麼?
- 26. 錯誤CS1729,我做錯了什麼?
- 27. java.lang.StringIndexOutOfBOundsException錯誤我做錯了什麼
- 28. PHP錯誤,我做了什麼錯?
- 29. 爲什麼變量初始化爲0?
- 30. 我在做什麼錯用數組?
'for i in「$ @」' –