Existe uma maneira de verificar se um script bash está completo ou não?

Estou tentando implementar umREPL (loop de leitura e impressão de comentários) no bash. Se tal coisa já existe, por favor ignore o seguinte e responda esta questão com um ponteiro para ele.

Vamos usar esse script como um exemplo (nomeietest.sh):

if true
then
  echo a
else
  echo b
fi
echo c

O que eu quero fazer é ler este script linha por linha, verificar se o que eu li até agora é uma expressão completa; se estiver completo,eval isto; caso contrário, continue lendo a próxima linha. O roteiro abaixo ilustra a minha ideia com esperança (no entanto, não funciona bem).

x=""
while read -r line
do
  x=$xMotivação

Para um script bash, quero analisá-lo em expressões sintaticamente completas, avaliar cada expressão, capturar a saída e, finalmente, marcar o código-fonte e a saída (digamos, usando Markdown / HTML / LaTeX / ...). Por exemplo, para um script

echo a
echo b

O que eu quero alcançar é a saída assim:

```bash
echo a
```

```
a
```

```bash
echo b
```

```
b
```

em vez de avaliar todo o script e capturar toda a saída:

```bash
echo a
echo b
```

```
a
b
```
\n'$line # concatenate by \n # the line below is certainly a bad way to go if eval $x 2>/dev/null; then eval $x # code seems to be working, so eval it x="" # empty x, and start collecting code again else echo 'incomplete expression' fi done < test.sh
Motivação

Para um script bash, quero analisá-lo em expressões sintaticamente completas, avaliar cada expressão, capturar a saída e, finalmente, marcar o código-fonte e a saída (digamos, usando Markdown / HTML / LaTeX / ...). Por exemplo, para um script

echo a
echo b

O que eu quero alcançar é a saída assim:

```bash
echo a
```

```
a
```

```bash
echo b
```

```
b
```

em vez de avaliar todo o script e capturar toda a saída:

```bash
echo a
echo b
```

```
a
b
```

questionAnswers(4)

yourAnswerToTheQuestion