2017-12-28 2 views
0

Ich arbeite an einem Skript, das Sie control + d drücken müssen, wenn Sie Ihre Eingaben vervollständigen. Ich möchte diesen Befehl senden, damit ich einfach meine Arbeit schreiben kann, anstatt meine Arbeit wiederholen zu müssen.Senden Sie Strg + d an einen Server über Bash

+2

Also, was ist dein Problem? – Simon

+2

Ctl-d ist nur wie Sie EOF von einem interaktiven Terminal senden. Wenn Sie eine Eingabe an ein Programm übergeben, wird am Ende der Pipe EOF angezeigt, Sie müssen nichts Spezielles tun. – Barmar

Antwort

1

Sie sprechen wahrscheinlich vom Begrenzungszeichen "Ende der Übertragung", mit dem das Ende der Benutzereingabe angezeigt wird. Wenn das der Fall ist, können Sie immer Daten in Ihr Skript pipen. Das heißt, statt dies:

$ test_script.sh 
My input! 
^D 

Sie, dass die Daten in eine Datei schreiben würde:

$ cat > input 
My input! 
^D 

Dann Rohr, das in das Skript:

$ test_script.sh < input 

Keine ^D erforderlich, da Sobald diese Datei vollständig gelesen wurde, wird das Skript entsprechend signalisiert. Der < Shell-Operator wechselt STDIN, um aus einer Datei anstelle des Terminals zu lesen. Ebenso kann > verwendet werden, um die Ausgabe eines Programms zu erfassen und in einer Datei zu speichern, wie im zweiten Schritt hier ausgeführt, obwohl Sie jedes Werkzeug verwenden können, das Sie erstellen oder bearbeiten möchten.

Dies funktioniert mit so ziemlich jeder Skriptsprache, von Python, Perl, Ruby bis Node.js sowie Bash und anderen Shells.

Verwandte Themen