• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

(erledigt) BASH und globale Variablen

Folgendes Beispiel will mir nicht gelingen.
#!/bin/sh
#
v_sicherungsordner_heute="/home/michael/backup/sicherungsziel";
#
export DEPP;
OBERSTERDEPP="depp"
#
cat $v_sicherungsordner_heute | while read v_zeile;
do
#
DEPP=$(echo "abc");
OBERDEPP="xyz";
OBERSTERDEPP="doch nicht";
#
done;
#
echo $OBERDEPP;
echo $OBERSTERDEPP;
echo $DEPP;

Ich schaffe es nicht aus der Schleife heraus eine weiterverarbeitbare Variable zu füllen.
Einzig OBERSTERDEPP bringt als echo "depp".
Der Rest wird einfach ignoriert.

Ich möchte oben die Varaiblen definieren und dann endsprechend weiterverarbeiten. Eigentlich nichts aussergewöhnliches 8)

Natürlich ist das nur noch ein sinnloses Beispiel. Aber selbst das ....
 
roemi schrieb:
Ich schaffe es nicht aus der Schleife heraus eine weiterverarbeitbare Variable zu füllen.
Bin ich auch schon mal drauf reingefallen. Das liegt daran, dass durch das pipe die while-Schleife in einer eigenen Sub-Shell abgearbeitet wird. Und eine Sub-Shell kann keine Variablen in die aufrufende Shell vererben. Umgekehrt geht es natürlich schon - und zwar mit export.

Als Lösung versuche mal bitte, die Datei dem while in der folgenden Form zuzuleiten:
Code:
while ...
do
done <datei.txt
 
OP
roemi
Sehr gut, damit sollte ich nachher zum Ziel kommen. Ich sag Bescheid (jetzt dauert es aber eine Weile).
 
OP
roemi
for i in `cat $v_sicherungsordner_heute`; do
let "e += 1";
array[$e]=$i;
done
#
v_datum_sicherungsordner=${array[1]};
v_sicherungsordner=${array[2]};
echo $v_datum_sicherungsordner $v_sicherungsordner;

So klappt es!
 
Oben