Была похожая проблема. Мое решение использует сопрограмму в k sh, и я не знаю, возможно ли это в bash, например, ваш флаг (но если установлен k sh, вы все равно можете его использовать). По крайней мере, это может дать вам несколько указателей.
#!/bin/ksh
#connecting using coroutine -- Note the |& at the end
{JBOSS_HOME}/bin/jboss-cli.sh --connect --controller={Master_IP}:{Master_Port} --user={UID} --password={Password} |&
#sending request to coroutine
print -p "ls -l /host\n"
#Reading from corouting
while read -p answer; do
##Need to verify when stop reading -- after the prompt is back
if [[ $answer != *domain*:* ]]; then
## If it's not an error, concatenate, space delimited, the response
if [[ $answer == *WFLYCTL* ]]; then
print "$(date +"%Y%m%d%H%M") - FATAL - Error detected - Exiting"
print "$(date +"%Y%m%d%H%M") - Error detected : $answer"
exit
else
Dummy+=$answer" "
fi
elif [[ locFlag -eq 1 ]]; then
locFlag=0
break
else
locFlag=1
fi
done
##Response to array
SvrArray=( $Dummy )
##Do anything with the response, here just printing
for i in ${!SvrArray[@]}; do
print "$i. ${SvrArray[$i]}"
done