Reading a delimited string into an array in Bash

Nikola Novak picture Nikola Novak · Feb 15, 2012 · Viewed 244.5k times · Source

I have a variable which contains a space-delimited string:

line="1 1.50 string"

I want to split that string with space as a delimiter and store the result in an array, so that the following:

echo ${arr[0]}
echo ${arr[1]}
echo ${arr[2]}

outputs

1
1.50
string

Somewhere I found a solution which doesn't work:

arr=$(echo ${line})

If I run the echo statements above after this, I get:

1 1.50 string
[empty line]
[empty line]

I also tried

IFS=" "
arr=$(echo ${line})

with the same result. Can someone help, please?

Answer

kev picture kev · Feb 15, 2012

In order to convert a string into an array, please use

arr=($line)

or

read -a arr <<< $line

It is crucial not to use quotes since this does the trick.