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