#!/bin/bash
s="[split]
this is a test 1
[split]
this is a test 2
[split]
this is a test 3
this is a test 4
this is a test 5"
a=()
i=0
while read -r line
do
a[i]="${a[i]}${line}"$'\n'
if [ "$line" == "[split]" ]
then
let ++i
fi
done <<< "$s"
echo ${a[-1]}
Я просто читаю каждую строку из строки в массив, и когда я сталкиваюсь с [split] , я увеличиваю индекс массива. Наконец, я повторяю последний элемент.
EDIT :
если вы просто хотите, чтобы последняя часть тоже не нуждалась в массиве. Вы можете сделать что-то вроде
while read -r line
do
a+="${line}"$'\n'
if [ "$line" == "[split]" ]
then
a=""
fi
done <<< "$s"
echo $a