bash – 在数组上循环,打印索引和值

前端之家收集整理的这篇文章主要介绍了bash – 在数组上循环,打印索引和值前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想做这样的事情:
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),所以:
for i in "${!foo[@]}"; do 
  printf "%s\t%s\n" "$i" "${foo[$i]}"
done

猜你在找的Bash相关文章