Frage beim Thema Bashprogrammierung

  • Themenstarter Themenstarter Shlyakh
  • Beginndatum Beginndatum
S

Shlyakh

Guest
Ich versuche mich schon seit einiger Zeit an einem Shellscript. Ich will die Quersumme einer Zahl berechnen, die ich als Kommandozeilenargument übergebe...

Code:
#!/bin/bash

#Hier übergebe ich die Zahl als Kommandozeilenarg.
zahl="$1"




#Und hier will ich deren Quersumme berechnen.
quersumme=0
for ((i=0; i<=$(expr ${#zahl}); i++)); 

do

    #echo $(expr $quersumme+${zahl:$i:1})  
    quersumme=$(expr $quersumme + ${zahl:$i:1})  

done

#Und diese am Ende zurückgeben.
echo $quersumme

Die Fehlermeldung lautet:

expr: syntax error

Ich weiß wirklich nicht, was bei der Sytax falsch sein soll, ich sehe keinen Widerspruch zu der Literatur, die sich gelesen habe. Es ist nicht wichtig, falls sich in Euren Reihen ein Experte bezügl. Shellprogrammierung findet, so möge er mir bitte sagen, was da falsch sein könnte.

Ich bedanke mich im Voraus recht herzlich für Tipps.
 
Deine expr ist in Ordnung, allerdings ist dein Schleifendurchlauf zu lang. Die Schleife läuft einmal zuviel durch, so dass der letzte Durchlauf einen ungültigen expr Ausdruck erzeugt, dieser führt zu dem Fehler.

Code:
for ((i=0; i<$(expr ${#zahl}); i++))

So läufts besser. ;-)
 
Zurück
Oben