Использование более поздних версий GNU grep (поставляется с Ubuntu) с опцией -z:
$ IFS=, arrayvar=( $(grep -Pzo '\s+VARIABLES\s+{\K[^}]+(?=})' temp1 | tr -d '[:space:]') )
$ echo "${arrayvar[0]}"
a9EventCode
$ echo "${arrayvar[1]}"
a9ControllerNumber
$ echo "${#arrayvar[@]}"
6
-z позволяет grep обрабатывать строки входного текста, разделенные ASCII NUL вместо новых строк, чтобы мы могли буквально соответствовать символам новой строки. Образец PCRE \s+VARIABLES\s+{\K[^}]+(?=}) будет соответствовать тексту внутри {}. Затем мы удалили пробелы (пробел, табуляцию, новую строку) с помощью tr -d '[:space:]'. Когда IFS установлен в ,, мы можем создать массив с запятой разделенные строки.