Уже есть похожие вопросы, но я отправляю это, потому что ни один из ответов не работал. Я пишу bash-скрипт для автоматизации установки пакетов pacman и AUR в моей системе Arch. Идея состоит в том, чтобы прочитать файл (myfile) с именами пакетов сначала построчно, а затем слово за словом и выполнить установку для каждого слова. Это хорошо работает для pacman, но не для AUR Helper (aurman). Часть для Аурмана выглядит так:
while read line; do
if [[ "$line" =~ \$[[:space:]]aurman[[:space:]]-S[[:space:]][[:alnum:]]* ]]
then
aurline=$(echo "$line" | awk '{ $1=""; $2=""; $3=""; print}' | sed 's/^ *//')
for aurpkg in $aurline
do
sudo -u "${my_user}" bash << EOF
aurman -S --noconfirm --needed --noedit "$aurpkg"
wait
EOF
done
fi
done < "$myfile"
С опциями --noconfirm --needed --noedit aurman не запрашивает у меня Да / Нет, но для некоторых пакетов запрашивает номер. Таким образом, проблема в этом случае - скрипт не ждет, пакет не устанавливается, и aurman выдает ошибку «EOFError: EOF при чтении строки». Я попытался приостановить сценарий следующим образом:
aurman ...
wait
или вот так:
aurman ... &
wait
но ни одна из этих работ.
Итак, как я могу приостановить свой сценарий, когда Аурман запрашивает у меня номер? Каков общий подход в подобных случаях? Как я могу дать ответ для определенного пакета с самого начала, когда я запускаю скрипт (например, 1 для пакета x)?