[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: bash script: stdin wieder ausgeben



Hallo,

Am Sun, 21 Oct 2012, Dirk Abe schrieb:
>ein Bash Script bekommt bei seinem Aufruf den Inhalt einer Mail
>an Stdin übergeben und soll diesen am Ende auch wieder an Stdout zurückgeben.
>
>Das Script:
>
>
>#!/bin/bash -x
>
>
># Verzeichnis für die aktuelle KW anlegen 
>DIR=$(date +%Y_%U)
>DIR2=/home/mailuser/anhang/iap
>DIR3=$DIR2/$DIR
>mkdir $DIR3 >> $DIR2/munpack.log
>cd $DIR3
>
># Anhänge speichern
>munpack $1   >> $DIR2/munpack.log
>
># Bilder löschen
>rm -f *.jpg  >> $DIR2/munpack.log
># Mail zurückgeben
>echo $1
>cat $1

Du hast kein '$1'.

[..]
>+ munpack
>munpack: reading from standard input

Hier frisst dir 'munpack' schon das stdin weg.

Und auf 'stdin' kannst du nicht "zurückwandern" an den Anfang von
stdin.

Am besten ist wohl die Datei in den Speicher, also in eine Variable zu
lesen:

====
file=$(< /dev/stdin )
echo "$file" | munpack
echo "[stdin]" ## oder: echo $(readlink /dev/stdin)
cat "$file"
====

Ansonsten solltest die Datei als Namen übergeben und "$1" verwenden:

====
# Anhänge speichern
munpack "$1"   >> $DIR2/munpack.log

# Mail zurückgeben
echo "$1"
cat "$1"
====

(und das Script mit dem Dateinamen aufrufen, statt dei Datei per stdin
reinzuschieben)

Wenn stdin immer eine Datei ist könnte man noch etwas tricksen und im
script die Datei nochmal öffnen.

====
filename=$(readlink /dev/stdin)
test -f "$filename" || { r=$?;
     echo "FEHLER: stdin ist keine Datei!"; exit $r; }
munpack "$filename"
echo "filename"
cat "$filename"
====

Besser aber ist wie gesagt, du übergibst einfach den Namen der Datei
als Argument an das Script bzw. liest die Datei in eine Variable.

Achso, alles glaub bash-spezifisch.

HTH,
-dnh

-- 
> Heute wurde ausdrücklich gesagt, daß seine Haustür kein Schloß hat.
> Hat er keine Wertsachen im Haus?                   -- Andrej Kluge
Ich sag nur: 4 Exfrauen.                                -- Eva Preuß
                                 in de.rec.tv.serien über Gibbs/NCIS


Reply to: