Існують вже подібні питання, але я їх публікую, оскільки жодна з відповідей не спрацювала. Я пишу сценарій bash для автоматизації встановлення пакетів pacman і AUR на моїй системі Arch. Ідея полягає в тому, щоб прочитати файл (myfile) з іменами пакета перший рядок за рядком, а потім слово за словом і виконати установку для кожного слова. Це відмінно працює для Pacman, але не для AUR Helper (aurman). Частина для 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 --необхідний --нередагувати aurman не підказує мені для Так / Ні, але для деяких пакетів він підказує мені номер. Отже, проблема в цьому випадку скрипт не чекає, пакет не встановлюється і aurman видає помилку "EOFError: EOF при читанні рядка". Я спробував призупинити такий сценарій:
aurman ...
wait
або так:
aurman ... &
wait
але жодна з цих робіт.
Отже, як я можу призупинити свій скрипт, коли aurman підказує мені номер? Який загальний підхід у таких випадках? Як я можу дати відповідь на певний пакет з самого початку, коли я запускаю скрипт (наприклад, 1 для пакета x)?
aurmanале можливоexpectце потрібний вам інструмент. Подивитисяman 1 expectі це відповідь .