【发布时间】:2012-07-29 13:42:50
【问题描述】:
我有一个 string 格式如下:
I'm\nNed\nNederlander
I'm\nLucky\nDay
I'm\nDusty\nBottoms
我想将它逐行移动到一个字符串数组中,这样:
$ echo "${ARRAY[0]}"
I'm\nNed\nNederlander
$ echo "${ARRAY[1]}"
I'm\nLucky\nDay
$ echo "${ARRAY[2]}"
I'm\nDusty\nBottoms
但是,我遇到了字符串本身中的“\n”字符的问题。它们在字符串中表示为两个单独的字符,反斜杠和“n”,但是当我尝试进行数组拆分时,它们被解释为换行符。因此,使用IFS 进行典型的字符串拆分不起作用。
例如:
$ read -a ARRAY <<< "$STRING"
$ echo "${#ARRAY[@]}" # print number of elements
2
$ echo "${ARRAY[0]}"
I'mnNednNederla
$ echo "${ARRAY[1]}"
der
【问题讨论】:
-
顺便说一句,有人知道如何修复 SE 对上述代码的可怕格式吗?
-
“可怕的格式”是由于撇号被解释为单引号(它希望是平衡的)。使用“块引用”标签而不是“代码”标签。
标签: arrays string bash escaping