加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-15 16:44:17 所属栏目:安全 来源:网络整理
导读:我想做这样的事情: 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:# ?: ba
我想做这样的事情:
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 "%st%sn" "$i" "${foo[$i]}"
done

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读