我想做这样的事情:
foo=( ) foo[0]="bar" foo[35]="baz" for((i=0;i<${#foo[@]};i++)) do echo "$i: ${foo[$i]}" done # Output: # 0: bar # 1:
然后我尝试使用 for in 循环遍历它:
foo=( ) foo[0]="bar" foo[35]="baz" for i in ${foo[@]} do echo "?: $i" done # Output: # ?: bar # ?: naz
但在这里我不知道索引值。
我知道你可以像
foo=( ) foo[0]="bar" foo[35]="baz" declare -p foo # Output: # declare -a foo='([0]="bar" [35]="baz")'
但是,你不能用另一种方式来做吗?
"${!foo[@]}"你会发现带有( reference )的数组键,所以:
"${!foo[@]}"
for i in "${!foo[@]}"; do printf "%s\t%s\n" "$i" "${foo[$i]}" done
这意味着索引将在其中,$i而元素本身必须通过${foo[$i]}
$i
${foo[$i]}