Umgang mit Variablen

30/01/2015 - 13:38 von Alexander Goetzenstein | Report spam
Anfàngerfrage:
Was ist der unterschied zwischen

for i in {1..5}
do
echo 'Durchgang Nr '$i
done

und

RETRY=5


for j in {1..$RETRY}
do
echo 'Durchgang Nr '$j
done

?

Ersteres ergibt die Ausgabe


Durchgang Nr 1
Durchgang Nr 2
Durchgang Nr 3
Durchgang Nr 4
Durchgang Nr 5



wie erwartet, doch letzteres bringt


Durchgang Nr {1..5}



auf den Bildschirm. Das möchte ich gern verstehen: was passiert dabei
genau?
Und: wie kann ich eine Variable einsetzen, so dass das erste Ergebnis
erscheint?



Gruß
Alex
 

Lesen sie die antworten

#1 Juergen Ilse
30/01/2015 - 14:45 | Warnen spam
Hallo,

Alexander Goetzenstein wrote:
Anfàngerfrage:
Was ist der unterschied zwischen

for i in {1..5}
do
echo 'Durchgang Nr '$i
done

und

RETRY=5

for j in {1..$RETRY}
do
echo 'Durchgang Nr '$j
done

?



In Posix-shells und Uralt-Bourne-shells schreibt man:

for j in 1 2 3 4 5; do
echo 'Durchgang Nr '$j
done

Fuer den zweiten Fall kann man sich eines Tools bedienen, um die Sequenz
zu erzeugen:

for j in $(seq 1 $RETRY); do
echo 'Durchgang Nr '$j
done
bzw.
for j in `seq 1 $RETRY`; do
echo 'Durchgang Nr '$j
done

Ausserdem kannst du die Single-Quotes in der echo-Zeile entsorgen.
Man sollte keine bash-spezifischen Dinge verwenden, solange man sie
vermeiden kann (oder das vermeiden von "bashismen" einen unzumutbaren
Mehraufwand bedeuten wuerde).

Tschuess,
Juergen Ilse ()
Ein Domainname ist nur ein Name, nicht mehr und nicht weniger.
Wer mehr hineininterpretiert, hat das Domain-Name-System nicht
verstanden.

Ähnliche fragen