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