Dafür ist der yes
Befehl da. Es gibt y
eine 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 y
alle Fragen. Um n
alle Fragen zu beantworten , ersetzen Sie yes
durch yes n
. Für eine vordefinierte Mischung aus y
und n
können Sie ersetzen yes
durch:
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 y
an die Pipe schreiben , wird sie da sein, um sie uninstall
zu 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 uninstall
entschieden wird, die Eingabe zu leeren, bevor die Frage gestellt wird.
Alle diese gehen davon aus, dass der uninstall
Befehl 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 expect
oder 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