У меня был файл 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())