staging.inyokaproject.org

Befehlsausgabe und Fehlerausgabe auf Konsole und Umleitung in Datei in if Anweisung

Status: Gelöst | Ubuntu-Version: Kein Ubuntu
Antworten |

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13242

benitzer schrieb:

Nun habe ich den Code:

1
2
(tar vvczf archiv.tar.gz /tmp/test; check=$?) 2>&1 | tee /tmp/tar_log.txt
if [ $check == "0" ]

Das kann nicht funktionieren, weil die Variable in einer Subshell definiert wird:

1
2
3
4
$ (false; check=$?); echo "@${check}@"
@@
$ { false; check=$?; }; echo "@${check}@"
@1@

Du musst die geschweiften Klammern nehmen, wie im zweiten Beispiel.

benitzer

(Themenstarter)

Anmeldungsdatum:
1. August 2016

Beiträge: Zähle...

Danke, rklm!

Ich habe jetzt eine Lösung gefunden bzw. den Post von rklm umgesetzt. Diese Zeile des Test-Skripts sieht jetzt folgendermaßen aus:

1
{ tar vvczf archiv.tar.gz /tmp/test; check="$?"; echo "$check"; if [ "$check" == "0" ]; then echo "Verzeichnis /tmp/test/ wurde erfolgreich gepackt"; else echo "Fehler: Verzeichnis /tmp/test/ konnte nicht gepackt werden"; fi; } 2>&1 | tee /tmp/tar_log.txt

Die Ausgabe ist nun folgende (im Falle eines Fehlers):

tar: Removing leading `/' from member names
tar: /tmp/test: Cannot stat: No such file or directory
tar: Exiting with failure status due to previous errors
2
Fehler: Verzeichnis /tmp/test/ bzw. (das 20160804_003559) konnte nicht gepackt werden

oder (, wenn alles ordnungsgemäß funktioniert):

tar: Removing leading `/' from member names
drwxrwxr-x mcserver/mcserver 0 2016-08-02 00:35 /tmp/test/
-rwxrwxrwx mcserver/mcserver 6 2016-08-02 00:27 /tmp/test/test1
-rw-rw-r-- mcserver/mcserver 6 2016-08-02 00:27 /tmp/test/test3
-rw-rw-r-- mcserver/mcserver 6 2016-08-02 00:27 /tmp/test/test2
0
Verzeichnis /tmp/test/ wurde erfolgreich gepackt

Nochmals vielen Dank euch beiden, habt mir sehr geholfen!

MfG benitzer

Antworten |