Hi Liste, habe hier ein kleines Problem mit einem bash-script. Hier erstmal ein kleiner Ausschnitt aus dem script. --8<-- if [ -f ${PIDFILE} ] ; then echo "ERROR: unalbe to start `basename ${0}`. already running!" exit 1 else echo $$ > ${PIDFILE} fi -->8-- aufruf des scriptes folgendermassen: /home/user/bin/script1.sh >> //home/user/log/script1.log 2>&1 Meine Frage nun: Kann ich die Ausgabe der beiden Zeilen mit echo ... auf die Konsole umleiten und die restliche Ausgabe des Scriptes in obiges Logfile? Wenn ja, wer kann mir sagen wie? Greetings Sven Pfeifer -- USER, n.: The word computer professionals use when they mean "idiot".
Sven Pfeifer wrote:
Hi Liste,
habe hier ein kleines Problem mit einem bash-script. Hier erstmal ein kleiner Ausschnitt aus dem script.
--8<-- if [ -f ${PIDFILE} ] ; then echo "ERROR: unalbe to start `basename ${0}`. already running!" exit 1 else echo $$ > ${PIDFILE} fi -->8--
aufruf des scriptes folgendermassen: /home/user/bin/script1.sh >> //home/user/log/script1.log 2>&1
Meine Frage nun: Kann ich die Ausgabe der beiden Zeilen mit echo ... auf die Konsole umleiten und die restliche Ausgabe des Scriptes in obiges Logfile?
hilf dir: if [ -f ${PIDFILE} ] ; then echo "ERROR: unalbe to start `basename ${0}`. already running!"
/dev/fd/0 exit 1 else echo $$ > ${PIDFILE} >/dev/fd/0 fi
? Gruß, Daniel
On Don, 30 Aug 2001, Daniel Wolpert wrote:
echo $$ | tee ${PIDFILE} >/dev/fd/0
Wie kommst du auf /dev/fd/0 ?? Das ist doch stdin! $ l /dev/stdin lrwxrwxrwx 1 root root 4 Sep 6 1999 /dev/stdin -> fd/0 Besser: /dev/stdin /dev/stdout /dev/stderr verwenden! Und noch besser: die internen fd's verwenden... Beispiele finden sich z.B. in jedem autoconf configure-script... -dnh -- 169: Veganer Die, die ihre Kinder nicht säugen, weil das für die Mutter Tierquälerei wäre. (Wau Holland)
* Sven Pfeifer schrieb am 30.Aug.2001:
--8<-- if [ -f ${PIDFILE} ] ; then echo "ERROR: unalbe to start `basename ${0}`. already running!" exit 1 else echo $$ > ${PIDFILE} fi -->8--
aufruf des scriptes folgendermassen:
/home/user/bin/script1.sh >> //home/user/log/script1.log 2>&1
Meine Frage nun: Kann ich die Ausgabe der beiden Zeilen mit echo ... auf die Konsole umleiten und die restliche Ausgabe des Scriptes in obiges Logfile?
echo "ERROR: ... " > /dev/tty Bernd -- Hast Du bei Problemen schon in der SuSE-Support-Datenbank (SDB) nachgesehen? Auf Deinem Rechner: http://localhost/doc/sdb/de/html/index.html | mit Apache: http://localhost/doc/sdb/de/html/key_form.html | Zufalls- Tagesaktuell bei SuSE: http://sdb.suse.de/sdb/de/html/index.html | signatur 2
On Don, 30 Aug 2001, Sven Pfeifer wrote:
--8<-- if [ -f ${PIDFILE} ] ; then echo "ERROR: unalbe to start `basename ${0}`. already running!" exit 1 else echo $$ > ${PIDFILE} fi -->8--
aufruf des scriptes folgendermassen:
/home/user/bin/script1.sh >> //home/user/log/script1.log 2>&1
Meine Frage nun: Kann ich die Ausgabe der beiden Zeilen mit echo ... auf die Konsole umleiten und die restliche Ausgabe des Scriptes in obiges Logfile?
Ja klar. Du willst also Fehler auf die Konsole und den Rest ins log? Dann musst du die Fehler einfach auf stderr ausgeben (fd 2). ==== if [ -f ${PIDFILE} ] ; then echo "ERROR: unable to start `basename ${0}`. already running!" >&2 exit 1 ## ^^^[2] else echo $$ | tee ${PIDFILE} >&2 fi ## ^^^[1] ^^^[2] ==== [1] Ein "T-Stueck" spaltet stdin (die Ausgabe von echo) auf und leitet einen "Strang" in ${PIDFILE}, der andere "wandert" auf stdin weiter... [2] ... und dieses wird auf stderr umgebogen... /home/user/bin/script1.sh >> /home/use/log/script1.log -dnh -- Wußten Sie schon, daß eine Holzhammernarkose total ueberfluessig ist, weil ein Holzhammer gar nichts spuert, wenn man mit ihm zuschlaegt...?
participants (4)
-
B.Brodesser@t-online.de
-
Daniel Wolpert
-
David Haller
-
Sven Pfeifer