以特定格式打印 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
我有一个 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