Поддерживает ли bash выполнение чтения, вложенного в цикл чтения?
Команда чтения bash очень удобна для:
- прочитайте -p, чтобы запросить пользователя и получить вход от пользователя.
- while прочитать цикл для итерации по строкам файла.
Однако у меня возникают проблемы с одновременным выполнением.
Например:
#!/bin/bash
while read item
do
echo Item: $item
read -p "choose wisely: " choice
echo You still have made a $choice.
done < /tmp/item.list
Вместо того, чтобы блокировать и стоять для пользователя, чтобы ввести выбор, bash заполняет $choice следующим элементом в файле item.list.
Поддерживает ли bash выполнение чтения, вложенного в цикл чтения?
Ответы
Ответ 1
Самое простое исправление заключается в том, чтобы внешний read
читать из другого файла
вместо стандартного ввода. В Bash параметр -u
позволяет сделать
немного легче.
while read -u 3 item
do
# other stuff
read -p "choose wisely: " choice
# other stuff
done 3< /tmp/item.list