How to split a multi-line string containing the characters "\n" into an array of strings in bash?

Viewed 40725

I have a string in the following format:

I'm\nNed\nNederlander
I'm\nLucky\nDay
I'm\nDusty\nBottoms

I would like to move this to an array of strings line by line such that:

$ echo "${ARRAY[0]}"
I'm\nNed\nNederlander

$ echo "${ARRAY[1]}"
I'm\nLucky\nDay

$ echo "${ARRAY[2]}"
I'm\nDusty\nBottoms

However, I'm running into problems with the "\n" characters within the string itself. They are represented in the string as two separate characters, the backslash and the 'n', but when I try to do the array split they get interpreted as newlines. Thus typical string splitting with IFS does not work.

For example:

$ read -a ARRAY <<< "$STRING"
$ echo "${#ARRAY[@]}"   # print number of elements
2

$ echo "${ARRAY[0]}"
I'mnNednNederla

$ echo "${ARRAY[1]}"
der
2 Answers
Related