Ich habe ein wirklich einfaches Bash-Skript erstellt, das einige Befehle ausführt. Einer dieser Befehle benötigt zur Laufzeit Benutzereingaben. dh es fragt den Benutzer "Willst du bla bla bla?", ich möchte einfach eine Eingabetaste senden, damit das Skript vollständig automatisiert wird.
Ich muss zur Laufzeit nicht auf die Eingabe oder irgendetwas warten, es reicht aus, nur den Tastendruck zu senden, und der Eingabepuffer erledigt den Rest.
apt-get
, besteht die richtige Lösung darin, die Debconf-Datenbank mit Ihren bevorzugten Werten vorab festzulegen. dann wird es dich nicht fragen.Antworten:
oder die implizite Newline nutzen, die das Echo erzeugt (danke Marcin)
Jetzt können wir einfach die
--sk
Option verwenden:dh
sudo rkhunter --sk --checkall
quelle
xxd
Sie5c6e
hex, was ein Literal ist\n
. Wenn Sie dies nur tun, erhaltenecho | xxd
Sie tatsächlich ein Hex von0a
. Ich denke also, verwenden Sie, was auch immer Ihr Programm benötigt.0a0a
was immer noch nicht wie beabsichtigt ist, das Hinzufügen eines-n
Suppreses die implizite Newline. Aber Sie haben natürlich Recht, eine Ebeneecho | ...
funktioniert hier gut. Wird meine Antwort aktualisieren.5c6e
? Haben Sie die Option-e
ausgelassen oderecho
behandelt Ihre Shell diese Option nicht?echo -ne "\n" | xxd 0000000: 0a
undecho -n "\n" | xxd 0000000: 5c6e
undecho "\n" | xxd 0000000: 5c6e 0a
ich habe keinen Unterschied zwischen einfachen und doppelten Anführungszeichen gesehen. Meine Shell ist nur eine normale Bash. Gibt es Einstellungen, die das Verhalten solcher grundlegenden Funktionen regulieren würden?Möglicherweise ist der
yes
Befehl hilfreich.Sehen
man yes
quelle
yes
Ich finde es nützlich.yes
als Ausgabe gesendet wird . Lesen Sie die Manpage.Sie können einfach ja verwenden .
quelle
Hier ist eine Beispielverwendung mit
expect
:Überprüfen Sie:
man expect
für weitere Informationen.quelle
Sie könnten die Erwartung nutzen (die Erwartung des Menschen kommt mit Beispielen).
quelle