PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : kleines bash problem



eurofreddy
26.05.04, 17:51
Hallo,

ich möchte in einem bash script den wert einer variablen in eine neue variable auf addieren. ich bekomme aber immer fehlermeldungen. so hab ich es gemacht:

(( var1 += $var2 ))

das scheint aber wohl falsch zu sein ! :-)

Hat jemand ne Idee ?

Gruß Euro.

Hun
26.05.04, 18:13
der code grad eben sorgt dafür, dass var1 um var2 erhöht wird
ist das das was du willst?

eurofreddy
26.05.04, 18:43
ja eigentlich ist das was ich will !
er steigt mir nur immer bei dieser zeile aus dem script aus.
vielleicht liegt der fehler aber auch in der zeile danach. stimmt die folgende zeile auch ? :-) ich will die var1 durch 10 dividieren.

tmp=$(($var1/10))

irgendwas an dieser oder an der zeile die ich zuvor gepostet hab kann net stimmen !

Gruß Axel.

Hun
26.05.04, 18:57
diese zeile ist falsch
das $( wird als commando interpretiert (wie ``)

lass das mal weg

eurofreddy
26.05.04, 19:09
ok ein fehler weniger.
er mekkert aber immer noch die (( var1 += $var2 )) zeile an.
die fehlermeldung die er auspuckt lautet:
((: var1 += : syntax error: operand expected (error token is " ")

ich kann damit nix anfangen ! er summiert aber defenitiv nicht var2 zu var1 hinzu !

Gruß Axel.

Hun
26.05.04, 19:13
hmm fällt mir grad nix ein (hab noch nich viel in dem bereich gemacht, nur reingeschnuppert)
frag mal bei mrunix an (schwesterforum)

Jasper
26.05.04, 19:22
Hat jemand ne Idee ?


var1=$((var1+var2))


-j

netmaster
26.05.04, 19:24
Versuch doch mal diese Art:

var=`expr \( $var1 + $var2 \) / 10`

eurofreddy
26.05.04, 19:28
sorry hab en fehler gemacht ! das addieren der beiden Variablen funzt doch. das dividieren geht ebenso. das problem ist das z.B. 24+24+24+24+23=119/5=23,8 ist ! wenn ich mir nach der division allerdings mit echo $var1 ausgeben lasse steht da net 23,8 sondern 23 drin ! das ist mein problem wie ich festgestellt habe. ich dachte er summiert garnicht erst.
Sorry war mein fehler habs falsch beschrieben !

Aber warum gibt er mir keine 23,8 in der variablen sondern nur 23 aus ?
muss ich die irgendwie deklarieren so aller int bzw. float ?

Gruß Axel.

Jasper
26.05.04, 19:57
bash kann nur integer-arithmetik. komplexere dinge erledigt 'bc'


-j

Der Gestreifte
26.05.04, 19:58
muss ich die irgendwie deklarieren so aller int bzw. float ? float und andere kennt die bash nicht, Du musst Dir mit "bc" behelfen. Etwa in der Art:
a=2.34
b=6
VAR=$(echo "$a+$b" |bc)
Das ist, was ich aus dem Kopf weiss, die man zu "bc" gibt aber massig her.