BASH: Ausgabe nach Variable umlenken

Bash, Shell, PHP, Python, Perl, CGI
sierra
Posts: 69
Joined: 2003-08-07 06:07

BASH: Ausgabe nach Variable umlenken

Post by sierra »

Hallo,

ich versuche krampfhaft eine Fehlermeldung, die ein Befehl bringt nicht in eine Datei umzuleiten (das ist kein Problem!), sondern in eine Variable zu schreiben:

Code: Select all

mysqlhotcopy usr_web160_1 /root/ -u root -p password -q 2>test.tmp
Ich möchte die Ausgabe der evtl. Fehlermeldung aber nicht in eine Datei haben, sondern einfach eine Variable test zuweisen und dann die Daten weiterverarbeiten.

Ich krieg es einfach nicht hin. Ich hoffe jemand von Euch kann mir helfen?


Gruss

Sierra
hornox
Posts: 139
Joined: 2005-09-22 23:09

Re: BASH: Ausgabe nach Variable umlenken

Post by hornox »

TEST=`mysqlhotcopy usr_web160_1 /root/ -u root -p password -q 2>&1 | cat`
Dann hast du den Inhalt von stdout und stderr in $TEST, vermutlich gibt es noch bessere Lösungen aber mir fällt keine ein :(
sierra
Posts: 69
Joined: 2003-08-07 06:07

Re: BASH: Ausgabe nach Variable umlenken

Post by sierra »

Vielen Dank, ich bin einen Schritt weiter. Die Links hatte ich vorher schon nach Infos abgesucht.

Wenn ich jetzt die Daten wieder ausgeben will, kommt Fließtext raus:

Code: Select all

'usr_web160_1' is an empty database No tables to hot-copy at /usr/bin/mysqlhotcopy line 394.
Und das soll in der Variable drinstehen (Zeile für Zeile, wie gehabt):

Code: Select all

'usr_web160_1' is an empty database
No tables to hot-copy at /usr/bin/mysqlhotcopy line 394.
Ich habe den Befehl: "echo -e $var" benutzt.
sierra
Posts: 69
Joined: 2003-08-07 06:07

Re: BASH: Ausgabe nach Variable umlenken

Post by sierra »

Ich habs...

...mit echo -e "$var" geht es, Vielen Dank!
User avatar
isotopp
Posts: 471
Joined: 2003-08-21 10:21
Location: Berlin

Re: BASH: Ausgabe nach Variable umlenken

Post by isotopp »

HornOx wrote:TEST=`mysqlhotcopy usr_web160_1 /root/ -u root -p password -q 2>&1 | cat`
Dann hast du den Inhalt von stdout und stderr in $TEST, vermutlich gibt es noch bessere Lösungen aber mir fällt keine ein :(
Das "cat" ist nutzlos und überflüssig.
hornox
Posts: 139
Joined: 2005-09-22 23:09

Re: BASH: Ausgabe nach Variable umlenken

Post by hornox »

Note that the order of redirections is significant. For example, the command
ls > dirlist 2>&1
directs both standard output and standard error to the file dirlist, while the command
ls 2>&1 > dirlist
directs only the standard output to file dirlist, because the standard error was duplicated as standard output before the standard output was redirected to dirlist.

Code: Select all

TEST=`mysqlhotcopy usr_web160_1 /root/ -u root -p password -q 2>&1 >/dev/null`
Dann landet wirklich nur stderr in TEST (irgendwie traurig das ich trotz Sonnenschein über so was nachdenke :roll: )
sierra
Posts: 69
Joined: 2003-08-07 06:07

Re: BASH: Ausgabe nach Variable umlenken

Post by sierra »

Sagt mal,

das mit der Ausgabe umlenken funktioniert jetzt via:

Code: Select all

ERROR=`mysqlhotcopy usr_web160_1 /root/ -u root -p password -q 2>&1`
Wird bei "2>&1" nur der Error-Ausgabe ungelenkt oder auch site Standard-Ausgabe?

Weil ich erhalten immer noch irgendwelche Meldungen und ich vermute die kommen über die Standardausgabe.


Gruss
Milchmann
Roger Wilco
Posts: 5923
Joined: 2004-05-23 12:53

Re: BASH: Ausgabe nach Variable umlenken

Post by Roger Wilco »

Sierra wrote:Wird bei "2>&1" nur der Error-Ausgabe ungelenkt oder auch site Standard-Ausgabe?
Damit wird stderr nach stdout umgeleitet.
sierra
Posts: 69
Joined: 2003-08-07 06:07

Re: BASH: Ausgabe nach Variable umlenken

Post by sierra »

Roger Wilco wrote:Damit wird stderr nach stdout umgeleitet.
So habe ich das auch verstanden. Das einige was mich wundert, das ich immer noch Ausgaben erhalte. Vielen Dank für Deine Antwort.
hornox
Posts: 139
Joined: 2005-09-22 23:09

Re: BASH: Ausgabe nach Variable umlenken

Post by hornox »

Weil ich erhalten immer noch irgendwelche Meldungen und ich vermute die kommen über die Standardausgabe.
Genau das habe ich doch bei meinem ersten Lösungsversuch explizit dazugeschrieben. Die zweite Version die ich gestern hier gepostet hab hat das Problem nicht mehr weil da die Standartausgabe nach /dev/null umgelenkt wird.