Reputation: 726
I have a bash array as follows:
fruits=(
F001 "Sour fruit" 5
F002 "Sweet fruit" 15
F003 "Good fruit" 10
)
I want to access this array and print it as follows:
Fruit code: F001, Desc: Sour fruit, Price: 5
Fruit code: F002, Desc: Sweet fruit, Price: 15
Fruit code: F003, Desc: Good fruit, Price: 10
I tried the following code, But it's giving me a wrong output
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
Anyine know how to do this :)
Upvotes: 0
Views: 138
Reputation: 26501
The bash array you define does not have 3 elements, but 9. So you can quickly do this with a modulo 3 operation:
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
Upvotes: 3