Dafür ist der yesBefehl da. Es gibt yeine pro Zeile auf unbestimmte Zeit aus, sodass es an Befehle weitergeleitet werden kann, die Ja / Nein-Fragen stellen.
yes | /opt/MNG/MNGVIEWHP/fe/uninstall
Das beantwortet yalle Fragen. Um nalle Fragen zu beantworten , ersetzen Sie yesdurch yes n. Für eine vordefinierte Mischung aus yund nkönnen Sie ersetzen yesdurch:
printf '%s\n' y n n y y n...
Oder führen Sie es aus als:
/opt/MNG/MNGVIEWHP/fe/uninstall << 'EOF'
y
n
n
y
y
n
EOF
Wenn die Antwort nicht vor 10 Sekunden zum Lesen verfügbar sein muss, tun Sie Folgendes:
(sleep 10; echo y; sleep 2; echo n;...) | /opt/MNG/MNGVIEWHP/fe/uninstall
Aber das wäre wahrscheinlich nicht notwendig, wenn wir yan die Pipe schreiben , wird sie da sein, um sie uninstallzu lesen, wann immer sie sie lesen möchte. Es ist unwahrscheinlich, dass Sie warten müssen, bis sie bereit ist, sie zu lesen. Die Ausnahme wäre, wenn uninstallentschieden wird, die Eingabe zu leeren, bevor die Frage gestellt wird.
Alle diese gehen davon aus, dass der uninstallBefehl jede Antwort nur als eine Eingabezeile von ihrer Standardeingabe liest.
Für komplexere Fälle, in denen der Befehl die Antworten direkt aus dem tty - Gerät liest oder in denen Sie bedingt Feed Antworten (zum Beispiel auf dem, was die Befehlsausgaben), das ist , wo man Dinge wie benutzen würde expectoder zsh‚s zpty.
Beachten Sie, dass viele interaktive Programme in einen nicht interaktiven Modus wechseln können, wenn eine Option übergeben wird. Möglicherweise möchten Sie zuerst das Handbuch überprüfen, bevor Sie sich zu sehr um das Problem kümmern.
#! /bin/bash -anstelle von#!/usr/bin