Para permanecer bastante independiente del sistema, use un lenguaje de programación multiplataforma:como Python, use una biblioteca en serie multiplataforma como:pySerial y realice el procesamiento dentro de un script. He usado pySerial y pude ejecutar el script multiplataforma casi sin cambios en el código fuente. Al usar BASH te estás limitando bastante.
¿No es esto lo que estás buscando?
while read -r line < /dev/ttyS2; do
# $line is the line read, do something with it
# which produces $result
echo $result > /dev/ttyS2
done
Es posible que reabrir el dispositivo serie en cada línea tenga algún efecto secundario, en cuyo caso podría intentar:
while read -r line; do
# $line is the line read, do something with it
# which produces $result
echo $result > /dev/ttyS2
done < /dev/ttyS2
También podría mover la redirección de salida, pero sospecho que tendrá que desactivar el almacenamiento en búfer de salida estándar.