Как читать от пользователя в строке чтения цикла 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())

5
задан c card 13 March 2012 в 16:47
поделиться