¿Cómo leer del usuario dentro de la línea de lectura del bucle while?

Tuve un archivo bash que solicitó al usuario algunos parámetros y usó los valores predeterminados si no se proporcionó nada. El script luego realizó algunos otros comandos con los parámetros. Esto funcionó muy bien, sin problemas hasta la adición más reciente.

n un intento de leer el parámetro NAMES de un archivo txt, agregué un bucle while para tomar los nombres en el archivo, pero aún me gustaría que se soliciten los parámetros restantes.

Pero una vez que agregué el bucle while, la salida muestra la solicitud impresa en get_ans () y nunca se detiene para una lectura, por lo tanto, se seleccionan todos los valores predeterminados.

Me gustaría leer el primer parámetro de un archivo, y luego todos los archivos posteriores soliciten al usuario.

¿Qué rompí al agregar el ciclo while?

cat list.txt | 
while read line
do 
  get_ans "Name" "$line"
  read NAME < $tmp_file

  get_ans "Name" "$line"
  read NAME < $tmp_file
done

function get_ans
{
  if [ -f $tmp_file ]; then
    rm $tmp_file

  PROMPT=$1
  DEFAULT=$2

  echo -n "$PROMPT [$DEFAULT]: "
  read ans
  if [ -z "$ans" ]; then
    ans="$DEFAULT"
  fi
  echo "$ans" > $tmp_file
}

(NOTA: el código no es copiar y pegar, así que disculpe los errores tipográficos. El código real tiene una función definida antes que main ())

Respuestas a la pregunta(6)

Su respuesta a la pregunta