¿Cómo usar `while read` (Bash) para leer la última línea de un archivo si no hay una nueva línea al final del archivo?

Digamos que tengo el siguiente script de Bash:

while read SCRIPT_SOURCE_LINE; do
  echo "$SCRIPT_SOURCE_LINE"
done

Noté que para los archivos sin una nueva línea al final, esto saltará efectivamente la última línea.

He buscado una solucióny encontré esto:

Cuando la lectura alcanza el final del archivo en lugar del final de la línea, lee los datos y los asigna a las variables, pero sale con un estado distinto de cero. Si su ciclo está construido "mientras lee; haga cosas; hecho

Entonces, en lugar de probar el estado de salida de lectura directamente, pruebe un indicador y haga que el comando de lectura establezca ese indicador desde dentro del cuerpo del bucle. De esa manera, independientemente del estado de salida de las lecturas, se ejecuta todo el cuerpo del bucle, porque la lectura era solo una de las listas de comandos en el bucle como cualquier otra, no un factor decisivo de si el bucle se ejecutará en absoluto.

DONE=false
until $DONE ;do
read || DONE=true
# process $REPLY here
done < /path/to/file.in

¿Cómo puedo reescribir esta solución para que se comporte exactamente igual que elwhile bucle que tenía antes, es decir, sin codificar la ubicación del archivo de entrada?

Respuestas a la pregunta(7)

Su respuesta a la pregunta