IFS
может разбивать строку только на каждый отдельный символ, и когда вы предоставляете <br><br>
, он разделяет ввод на <
, b
, r
и >
.
You можете использовать этот обходной путь, чтобы выполнить свою работу:
s="FIRST<br><br>SECOND<br><br>THIRD"
del=$'\5' # our arbitrary delimiter; can be any other control character
IFS="$del" read -ra arr <<< "${s//<br><br>/$del}"
declare -p arr
declare -a arr='([0]="FIRST" [1]="SECOND" [2]="THIRD")'
del=$'\5'
устанавливает разделитель на управляющий символ \5
. \5
- это просто произвольный символ, и его можно заменить любым другим символом, которого нет на входе. "${s//<br><br>/$del}"
заменить <br><br>
контрольным символом \5
IFS="$del"
разбивает ввод на \5
при заполнении массива