在bash中,是否可以在引号内放置几个数组然后访问它们?

时间:2013-11-12 02:12:15

标签: arrays bash quotes

我知道我可以这样做:

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.我想要这样做的原因是我希望能够访问迭代期间我想要访问的任何元素,而不是逐个迭代。这就是为什么我尝试将数组放在引号内而不是将引号放在一个大数组中。有没有办法做到这一点? 谢谢,

1 个答案:

答案 0 :(得分: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