Hallo Leute,
ich verzweifle an einem Problem. Ich habe das folgende Programm geschrieben. Ich wollte die Parameter die Ich dem Programm übergebe nicht wie mit echo $1 & echo $2 ausgeben, sondern eine Schleife drum basteln. Leider schaffe ich es nicht den Inhalt von $count wieder in ein $
zu packen. Vielleicht weiss jemand wie das geht.
Gruß EA80
#Programmaufruf mit Programmname parameter1 parameter2
#!/bin/bash
echo $1
echo $2
count=0
while [ $count -le 2 ]
do
echo $[$count] #so etwa, hier soll der Inhalt von $1 und $2 ausgegeben werden!
count=$[$count +1]
done
shell script Problem mit Variablen
Erstmal: count kannst du meines Wissens nicht mittels [ erhöhen, da [ nur eine Kurzschreibweise für test ist. Dafür musst du entweder expr oder (( nehmen:
Das Problem lässt sich mit eval lösen:Statt echo gehtz natürlich auch ein andere Befehl, beachte den 1. Backslash; dieser verhindert, dass die Bash $$ ersetzt. Nützlich ist auch "help for" und "help expr"
Code: Alles auswählen
count=`expr $count + 1` #oder
(( count=$count + 1))
Code: Alles auswählen
#!/bin/bash
echo $1
echo $2
for (( count=1 ; $count<2 ; count=$count+1 )); do
eval echo \$$count
done
So funktioniert es auch mit variabler Parameteranzahl:
Code: Alles auswählen
while [ "$1" != "" ]
do
echo $1
shift
done
Gruß
ernohl
ernohl