1

我知道我可以这样做:

set=("1 2 3" "4 5 6")
for subset in "${set[@]}"
do
for element in $subset
do
echo $element
done
done

1 2 3 4 5 6 将按顺序打印。但是,我不能这样做:

  set="(1 2 3) (4 5 6)"
  for subset in $set
  do
  echo ${subset[2]}
  done

我想打印 3 6。我想这样做的原因是我想在迭代期间访问我想访问的任何元素,而不是一个一个地迭代。这就是为什么我尝试将数组放在引号内,而不是将引号放在大数组内。有没有办法做到这一点?谢谢,

4

1 回答 1

2

不幸的是,我认为 bash 不支持多维数组,这听起来像是您正在寻找的。您可以在 bash 本身的帮助下模拟它,如下所示:

x=()
x+=("1,2,3")
x+=("4,5,6")

for val in ${x[@]}; do
    subset=($(echo $val | tr ',' ' '))
    echo ${subset[2]}
done
于 2013-11-12T02:50:28.323 回答