kann mir wer verraten warum das nicht geht?
Code: Alles auswählen
#!/bin/sh
bla=0
while $bla < 10 ;
do
$bla + 1
echo $bla
done
Code: Alles auswählen
#!/bin/sh
bla=0
while $bla < 10 ;
do
$bla + 1
echo $bla
done
Für soche Vergleiche benötigt man das Werkzeug test. Kleiner Tipp: andere Schreibweise dafür ist [.Colttt hat geschrieben:Code: Alles auswählen
$bla < 10
Eine Änderung einer Variablen kommt einem Setzen gleich. Also muss diese Zeile mit einem bla= beginnen.Colttt hat geschrieben:Code: Alles auswählen
$bla + 1
Code: Alles auswählen
#!/bin/sh
bla=0
while [ $bla -lt 10 ] ;
do
$bla=$bla + 1
echo $bla
done
Code: Alles auswählen
./gehts: 9: 0=0: not found
0
Code: Alles auswählen
#!/bin/bash
bla=0
while [ $bla -lt 10 ]
do
bla=$(($bla + 1))
echo $bla
done
Code: Alles auswählen
#!/bin/bash
bla=0
while [ $bla -lt 10 ]
do
let "bla+=1"
echo $bla
done
Code: Alles auswählen
#!/bin/bash
bla=0
while [ $bla -lt 10 ]
do
bla=`expr $bla + 1`
echo $bla
done
Code: Alles auswählen
bla=$(($bla + 1))
Das ist halt bash-Syntax. Die urspruengliche Bourne-Shell bot keine Arithmetik, man musste expr(1) verwenden. Spaeter kam dann das Builtin `let' und die bash-Arithmetik mit den Doppelklammern.Colttt hat geschrieben:warum doppelklammern? und warum davor ein $ ?Code: Alles auswählen
bla=$(($bla + 1))
Code: Alles auswählen
for i in 0 1 2 3 4 5 6 7 8 9 ; do
echo $i
done
Code: Alles auswählen
for i in `seq 0 9` ; do
echo $i
done
Code: Alles auswählen
date && ./test.sh && date
Fr 2. Sep 11:33:18 CEST 2011
Fr 2. Sep 11:33:56 CEST 2011
Code: Alles auswählen
date && ./test.sh && date
Fr 2. Sep 11:35:38 CEST 2011
Fr 2. Sep 11:35:38 CEST 2011
Code: Alles auswählen
date && ./test.sh && date
Fr 2. Sep 11:36:33 CEST 2011
Fr 2. Sep 11:36:34 CEST 2011
Code: Alles auswählen
time ./test.sh
Code: Alles auswählen
mit $(()):
real 0m1.053s
user 0m1.032s
sys 0m0.020s
Code: Alles auswählen
mit expr:
real 0m36.476s
user 0m39.726s
sys 0m16.777s
Code: Alles auswählen
mit let:
real 0m1.176s
user 0m1.148s
sys 0m0.024s
Code: Alles auswählen
dpkg -S `which expr`
coreutils: /usr/bin/expr
Code: Alles auswählen
dpkg -S $(which expr)
coreutils: /usr/bin/expr
Code: Alles auswählen
for i in {0..9}; do
echo "$i"
done
Code: Alles auswählen
i=0
while [ "$i" -lt 10 ]; do
echo "$i"
i=$[$i+1]
done
Code: Alles auswählen
$ i=0 ; time while [ $i -lt 200000 ]; do let i+=1; : ; done
real 0m3.565s
user 0m3.448s
sys 0m0.112s
$ time for (( i=1 ; i<200000 ; i=i+1 )) ; do : ; done
real 0m1.850s
user 0m1.784s
sys 0m0.060s
$ time for i in $(seq 0 200000) ; do : ; done
real 0m1.125s
user 0m1.144s
sys 0m0.032s
$ time for i in {0..200000} ; do : ; done
real 0m0.902s
user 0m0.888s
sys 0m0.012s