Как читать от пользователя в строке чтения цикла while?

У меня был файл bash, который запрашивал у пользователя некоторые параметры и использовал значения по умолчанию, если ничего не было дано. Затем скрипт продолжил выполнять некоторые другие команды с параметрами. Это работало отлично - никаких проблем до самого последнего дополнения.

В попытке прочитать параметр NAMES из txt-файла я добавил цикл while для получения имен в файле, но мне все равно хотелось бы, чтобы оставшиеся параметры запрашивались.

Но как только я добавил цикл while, вывод показывает напечатанное приглашение в get_ans () и никогда не останавливается для чтения, таким образом, выбираются все значения по умолчанию.

Я хотел бы прочитать первый параметр из файла, а затем все последующие файлы от пользователя.

Что я сломал, добавив цикл 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
}

(ПРИМЕЧАНИЕ. Код не копируется и не вставляется, поэтому, пожалуйста, извините за опечатки. Фактический код имеет функцию, определенную перед main ())

Ответы на вопрос(3)

Ваш ответ на вопрос