bash split string into array

来源:互联网 发布:linux cut uniq 编辑:程序博客网 时间:2024/05/16 12:51

In a bash script I would like to split a line into pieces and put them into an array.

The line:
Paris, France, Europe
I would like to have them in an array like this:
array[0] = Paris
array[1] = France
array[2] = Europe
I would like to use a simple code, the command's speed doesn't matter. Any ideas?

 

IFS=', ' read -a array <<< "$string"


To access an individual element:
echo "${array[0]}"


To iterate over the elements:
for element in "${array[@]}"
do
    echo "$element"
done


To get both the index and the value:
for index in "${!array[@]}"
do
    echo "$index ${array[index]}"
done


The last example is useful because Bash arrays are sparse. In other words, you can delete an element or add an element and then the indices are not contiguous.
unset "array[1]"
array[42]=Earth


To get the number of elements in an array:
echo "${#array[@]}"


As mentioned above, arrays can be sparse so you shouldn't use the length to get the last element. Here's how you can in Bash 4.2 and later:
echo "${array[-1]}"


in any version of Bash (from somewhere after 2.05b):
echo "$array[@]: -1:1}

0 0
原创粉丝点击