以特定格式打印 bash 数组数组

Print bash array of arrays to certain format

我有一个 bash 数组如下:

fruits=(
F001 "Sour fruit" 5
F002 "Sweet fruit" 15
F003 "Good fruit" 10
)

我想访问这个数组并打印如下:

Fruit code: F001, Desc: Sour fruit, Price: 5
Fruit code: F002, Desc: Sweet fruit, Price: 15
Fruit code: F003, Desc: Good fruit, Price: 10

我试过下面的代码,但它给了我一个错误的输出

for f in "${fruits[@]}"; do
    IFS=" " read -r -a arr <<<"${f}"

       code="${arr[0]}"
       desc="${arr[1]}"
       price="${arr[2]}"
       echo "Fruit code: : ${code}, Desc: ${desc}, Price: ${price}"
       echo
done

任何人都知道怎么做:)

您定义的bash数组没有3个元素,而是9个。所以您可以通过模3运算快速完成:

for ((i=0;i<"${#fruits[@]}";i=i+3)); do
  code="${fruits[i]}"
  desc="${fruits[i+1]}"
  price="${fruits[i+2]}"
  echo "Fruit code: : ${code}, Desc: ${desc}, Price: ${price}"
done