Ich habe ein Script im Einsatz, dass ich etwas verbessern möchte. Ein Zustand soll nur während der ShellSession zwischengespeichert werden:
Dies hier funktioniert:
1 2 3 4 5 6 7 | if irgendwas then touch '/ordner/datei' fi if test -f '/ordner/datei' then tuirgendwas fi |
und möchte ich durch folgendes ersetzen:
1 2 3 4 5 6 7 | if irgendwas then INDIKATOR='true' fi if [ "$INDIKATOR" == 'true' ] then tuirgendwas fi |
Aber das wiederum funktioniert (in meinem Fall) nicht.
Unter welchen Umständen funktionieren die Umgebungsvariablen nicht, während andere Dinge (touch) funktionieren?
Bzw. gibt es bessere Alternativen um einen Wert zwischen zu speichern?
Das hier ist der Code der nur mit "Touch" (anstelle von $ERROR) funktioniert:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | scriptfunktion1 () { cat $PfadzurDatei | while read line;do data=$(echo ${line#*' '}) sha_saved=$(echo ${line%%' '*}) sha_now=$(sha256sum "$data" | cut -d ' ' -f1) if [ ! "$sha_now" == "$sha_saved" ] then echo -e "$data" ERROR='true' fi fi done } scriptfunktion2 () { if [ "$ERROR" == 'true' ] then echo "1" else echo "2" fi } |
Kann es sein, dass "done" die Umgebungsvariable ($ERROR) aufhebt, weil sie sich innerhalb einer Schleife befindet?