Sobre
lectura de consola cuando la entrada estándar es redirigida
Descripción del Problema:
A raíz de la tarea 1 del año 2008 surge el problema de
cómo leer desde consola cuando el programa de script ha sido
ejecutado para tomar datos desde un archivo en lugar de teclado. En
particular se deseaba detener el programa en una parte y dar
continuidad al script por medio de retorno en teclado. SI al entrada ya
fue redireccionada ¿cómo leemos de teclado?
Es posible que haya varias soluciones, presento aquí una. En
UNIX (y ha sido adoptado por sus derivados) existe un archivo especial
del sistema para indicar nuestro terminal, es el /dev/tty. Este archivo
representa el terminar actual del usuario. Así podemos escribir
en un programa script:
read linea < /dev/tty
Con esto nos aseguramos que la lectura de "linea" será tomada
desde el teclado independientemente de alguna redirección previa
de la entrada estándar.
Así para atender el problema descrito podemos:
1. Leer desde entrada estándar para cumplir con el requerimiento
del script (que corresponderá a la lectura de un archivo
de datos),
2. cuando llegamos al punto donde deseamos parar, ejecutamos:
read -p "presione retorno para continuar:" linea < /dev/tty
3. Luego podemos continuar con nuestro script.
Agustín
Sept. 2008.