Ya hay preguntas similares, pero estoy publicando esto porque ninguna de las respuestas funcionó. Estoy escribiendo un script de bash para automatizar la instalación de los paquetes pacman y AUR en mi sistema Arch. La idea es leer un archivo (myfile) con los nombres de los paquetes primera línea por línea y luego palabra por palabra y realizar la instalación de cada palabra. Esto funciona bien para pacman pero no para AUR Helper (aurman). La parte para aurman se ve así:
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"
Con las opciones --noconfirm - necesario --noedit aurman no me solicita Sí / No, pero para algunos paquetes me pide un número. Entonces, el problema es que en este caso el script no espera, el paquete no se instala y aurman produce un error "EOFError: EOF al leer una línea". He intentado pausar el script así:
aurman ...
wait
o así:
aurman ... &
wait
Pero ninguna de estas obras.
Entonces, ¿cómo puedo pausar mi script cuando aurman me pide un número? ¿Cuál es el enfoque general en casos como este? ¿Cómo puedo dar una respuesta para un paquete específico desde el principio cuando ejecuto el script (por ejemplo, 1 para el paquete x)?
aurman
pero tal vezexpect
Es la herramienta que necesitas. Verman 1 expect
y esta respuesta .