Wie sende ich eine E-Mail/einen Brief an einen anderen Benutzer über ein Shell-Skript? Wie sende ich EOF?

Wie sende ich eine E-Mail/einen Brief an einen anderen Benutzer über ein Shell-Skript? Wie sende ich EOF?
if [ who | grep $user | grep pts ]
then
              write $user
                   message here
                   EOF
fi

Wenn ich es hier ausführe, blockiert es beim Schreiben und ich muss manuell eine Nachricht eingeben und dann Ctrl+ drücken d.

Gibt es eine Möglichkeit, Nachrichten und EOF über das Programm zu senden?

Antwort1

Du kannstLeiten Sie Ihre Eingaben von einem Programm zum anderen weiter.so was:

echo "message here"|write $user

oder so:

cat /tmp/message|write $user

Antwort2

Was Sie wahrscheinlich suchen, ist der folgende Schreibstil (entspricht anderen Methoden):

write $user <<EOF
    message here
    as opposed to the
       echo "asd" | write $user
    method, using here-doc redirection transparently allows multiple lines
    and reads everything until seeing the delimiter
    so the sent message end here:
EOF

Hinweis: Sie „senden hier nicht direkt ein EOF“, die Shell versteht das Wort „EOF“ lediglich als die von Ihnen gewählte Markierung zum Beenden der Eingabe und beendet die Eingabe dort – und „write“ fordert Sie in diesem Fall nicht auf, Strg+D zu drücken, weil es das Material liest, das die Shell ihm über eine Pipe zuleitet.

Hinweis 2: Es kann hilfreich sein zu wissen, dassjedenBefehlszeilentools in der Unix-Welt ermöglichen diese Art von Standard-Shell-Tricks, da sie nur auf dem unglaublich universellen Konzept von stdin basieren – write liest wie viele andere Tools, was ihm zugeführt wird – und fordert den Benutzer nur dann interaktiv zur Eingabe auf, wenn keine solche vorhanden ist und eine Benutzereingabemethode sinnvoll wäre.

Für weitere Informationen gibt es hier eine Frage, die genau danach fragt:https://stackoverflow.com/questions/2500436/wie-funktioniert-cat-eof-in-bash

verwandte Informationen