宁津做网站网站设计制作需要多少钱
#!/bin/basharr=([2]=3 [5]=2 [6]=2 [9]=1)for i in "${!arr[@]}"
dosum=$((sum+arr[i]))
doneecho $sum
 

 Bash 脚本中,* 和 @ 符号在数组上下文中有不同的用途。当使用它们来遍历数组时,必须了解它们之间的区别。
*(无前置感叹号!):- 在索引数组(indexed array)中,
"${arr[*]}"会展开成数组中的所有元素。 - 在关联数组(associative array)中,
"${arr[*]}"是不合法的,因为关联数组没有连续的索引。 
- 在索引数组(indexed array)中,
 @(无前置感叹号!):- 在索引数组中,
"${arr[@]}"和"${arr[*]}"的功能相同,都会展开成数组中的所有元素。 - 在关联数组中,
"${arr[@]}"同样是不合法的。 
- 在索引数组中,
 *(有前置感叹号!):- 在索引数组中,
"${!arr[*]}"是不合法的,因为感叹号用于关联数组来获取所有的键。 - 在关联数组中,
"${!arr[*]}"是错误的写法,正确的应该是"${!arr[@]}",它会展开成数组中的所有键。 
- 在索引数组中,
 @(有前置感叹号!):- 在索引数组中,
"${!arr[@]}"和"${!arr[*]}"都是不合法的,因为感叹号与@或*结合时仅用于关联数组。 - 在关联数组中,
"${!arr[@]}"会展开成数组中的所有键。 
- 在索引数组中,
 
所以,当遍历关联数组时,应该使用 "${!arr[@]}" 来获取所有的键。
