Unter UNIX habe ich einen Prozess, den ich mit nohup ausführen möchte. Dieser Vorgang wartet jedoch irgendwann an einer Eingabeaufforderung, an der ich ihn eingeben muss, yes
oder no
darauf, dass er fortgesetzt wird. Bisher habe ich unter UNIX Folgendes getan:
nohup myprocess <<EOF
y
EOF
Also starte ich den Prozess 'myprocess' mit nohup und Pipe in einer Datei mit 'y' und schließe die Datei. Die obigen Zeilen sind praktisch drei separate Befehle - dh ich drücke in der ersten Zeile unter UNIX die Eingabetaste, erhalte eine Eingabeaufforderung, in der ich 'y' eingebe, drücke die Eingabetaste, um schließlich 'EOF' einzugeben und erneut die Eingabetaste zu drücken. Das funktioniert also perfekt, aber mein Problem ist unten.
Ich möchte dies jetzt in Perl ausführen, bin mir aber nicht sicher, wie ich diesen Befehl ausführen kann, da er mehr als drei Zeilen umfasst. Ich weiß nicht, ob Folgendes funktioniert:
my $startprocess = `nohup myprocess <<EOF &
y
EOF
`
Antworten:
Wenn Sie nur eine Single
y
in den Standard des Prozesses schreiben möchten , können Sie dies tun:Wenn Sie
y
für jede Eingabeaufforderung weiter schreiben möchten , ist das Coreutilyes
genau für diesen Zweck vorhanden. Es schreibt weiterhin alles, was Sie stdout mitteilen. Standardmäßig wird "y" ausgegeben, sodass Sie einfach:Aber wenn Sie etwas anderes brauchen, können Sie es als Argument übergeben
quelle
yes
seit Äonen nicht mehr gesehen