Also note that using PL/SQL exception handling mechanism will let you use built-in functions SQLCODE and SQLERRM to find out which error occurred and to get the associated error message.
Please post the EXACT question. As already pointed out, extracting in several ways has been shown to you, and, according to your post#3, you know how to assign a command output - using "command substitution" - to a variable. Did you consider Yoda's proposal?
So - where are you stuck? And, SERIOUSLY!, start using code tags!
printf '%s\n' "$SHELL_VAR" | awk -F' -* ' '{printf("last field: \"%s\"\nnext to last field: \"%s\"\n", $NF, $(NF - 1))}'
which produces:
last field: "1"
next to last field: "Test Error Message PLUSVAR"
and adjust the format string in the awk printf function call to format the output of your two fields in whatever way you want to see them.
Note that the field separator here is a <space> followed by any number of <hyphen>s followed by another <space> to get rid of leading and trailing spaces in the fields you are extracting from the input line.