¿hay alguna manera de verificar si un script de bash está completo o no?

Estoy tratando de implementar unREPL (leer-eval-imprimir bucle) en bash. Si tal cosa ya existe, ignore lo siguiente y responda esta pregunta con un puntero.

Vamos a usar este script como ejemplotest.sh):

if true
then
  echo a
else
  echo b
fi
echo c

Lo que quiero hacer es leer este guión línea por línea, verificar si lo que he leído hasta ahora es una expresión completa de bash; si esta completo,eval eso; De lo contrario, sigue leyendo la siguiente línea. La secuencia de comandos a continuación ilustra mi idea con suerte (aunque no funciona del todo).

x=""
while read -r line
do
  x=$xMotivación

Para un script de bash, quiero analizarlo en expresiones sintácticamente completas, evaluar cada expresión, capturar la salida y finalmente marcar el código fuente y la salida (por ejemplo, usando Markdown / HTML / LaTeX / ...). Por ejemplo, para un script.

echo a
echo b

Lo que quiero lograr es la salida como esta:

```bash
echo a
```

```
a
```

```bash
echo b
```

```
b
```

En lugar de evaluar todo el script y capturar toda la salida:

```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
Motivación

Para un script de bash, quiero analizarlo en expresiones sintácticamente completas, evaluar cada expresión, capturar la salida y finalmente marcar el código fuente y la salida (por ejemplo, usando Markdown / HTML / LaTeX / ...). Por ejemplo, para un script.

echo a
echo b

Lo que quiero lograr es la salida como esta:

```bash
echo a
```

```
a
```

```bash
echo b
```

```
b
```

En lugar de evaluar todo el script y capturar toda la salida:

```bash
echo a
echo b
```

```
a
b
```

Respuestas a la pregunta(4)

Su respuesta a la pregunta