Ich versuche, stdin mehrmals in einem Shell-Skript zu lesen, ohne Glück. Die Absicht ist, zuerst eine Liste von Dateien zu lesen (die von der stdin-Pipe gelesen werden), und dann noch zweimal zu lesen, um zwei Zeichenfolgen interaktiv zu erhalten. (Was ich versuche zu tun ist eine Liste von Dateien zu lesen, um sie in einer E-Mail anzuhängen, dann den Betreff und schließlich den E-Mail-Text).lesen stdin mehrmals in bash
Bisher habe ich dies:
photos=($(< /dev/stdin))
echo "Enter message subject"
subject=$(< /dev/stdin)
echo "Enter message body"
body=$(< /dev/stdin)
(Plus Fehlercode überprüft, die ich für succintness weglassen)
Dies ist jedoch bekommt einen leeren Betreff und vermutlich, weil die zweite und dritte Umleitungen EOF erhalten .
Ich habe versucht, Stdin mit < & zu schließen und wieder zu öffnen - und Sachen, aber es scheint nicht so zu funktionieren.
Ich habe sogar versucht, ein Trennzeichen für die Liste der Dateien verwenden, mit einer "While; Zeile lesen" -Schleife und brechen Sie aus der Schleife, wenn das Trennzeichen erkannt wurde. Aber das hat auch nicht funktioniert (??).
Irgendwelche Ideen, wie man so etwas baut?
Der Grund, der für mich nicht funktioniert, ist, dass ich versuche, eine Pipe zu verwenden, um die Liste der Fotos zu übergeben. Wenn ich einfach die Felder vor der Liste lese, sind die ersten beiden Fotos in der Liste Betreff und E-Mail-Text, was ich nicht möchte. (Natürlich könnte ich diktieren, dass das Subjekt und der Körper in den ersten beiden Zeilen der Eingangsleitung übergeben werden müssen, aber das ist viel zu hässlich für mich.) – alvherre