[Shellscript] Problem bei der Berechnung der Quersumme einer Zahl

  • Themenstarter Themenstarter Shlyakh
  • Beginndatum Beginndatum
S

Shlyakh

Guest
Guten Abend. Ich will die Quesumme einer Zahl (die in der variablen $var gespeichert ist) bilden. So wie ich dies in Zeile 29 machen wollte, war es leider nicht von Erfolg gekrönt. Was ist daran falsch? Wie könnte man das Problem lösen? Ich habe in der Literatur leider nix aussagekräfitges gefunden. Das ganze ist für diese Programmieraufgabe:
http://www.programmieraufgaben.ch/aufgabe/pruefziffer-auf-euro-banknoten/fy4ohgdx

Code:
#!/bin/bash

zahl="$1"

ascii=`echo  -n ${zahl:0:1}|tr '[A-Z]' '[a-z]'|od -t d|awk '{printf("%s\n",$2) }'| head -1`

n=$(expr $ascii - 96)

laengez=$(expr ${#zahl} - 2)
laengezU1=$(expr ${#zahl} - 1)

var=$n${zahl:1:$laengez}
pruefz=${zahl:$laengezU1} #DAS IST DIE PRÜFZAHL!!


echo $var

#Ich will die quersumme von var.

quersumme=0;              #DAS IST DIE QUERSUMME!!


for ((i=0; i<${#var}; i++));

do

    #So kann ich die Quersumme nicht bilden.
    #echo ${var:$i:1}
    $(expr $quersumme + ${var:$i:1})

done

echo $quersumme
 
Zuletzt bearbeitet:
Es hat sich erledigt - hier die Lösung:

Code:
#!/bin/bash


if [ $# != 0 ]; then


zahl="$1"

ascii=`echo  -n ${zahl:0:1}|tr '[A-Z]' '[a-z]'|od -t d|awk '{printf("%s\n",$2) }'| head -1`

n=$(expr $ascii - 96)      #Mein Buchstabe!!


laengez=$(expr ${#zahl} - 2)
laengezU1=$(expr ${#zahl} - 1)

var=${zahl:1:$laengez}
pruefz=${zahl:$laengezU1} #DAS IST DIE PRÜFZAHL!!

#echo $var

#Ich will die quersumme von var.

quersumme=0;              


for ((i=0; i<${#var}; i++));

do

    quersumme=$(expr $quersumme + ${var:$i:1})
          
done



resquersumme=$(expr $quersumme + $n)

neunerrest=$(expr $resquersumme % 9) 

resultat=$(expr 8 - $neunerrest)

        if [ resultat == 0  ]; then

              if [ $n == 9  ]; then
                  echo "valid"
                  
              else
                  echo "not valid"

              fi


         else

               if [ $n == resultat  ]; then
                  echo "valid"

               else
                  echo "not valid"
             
               fi
   

        fi

#$n muss neun sein, wenn resultat null ist. Ansonsten muss $n dem resultat gleich sein.
#Die else-Schleife hier unten fängt den Fall ab, dass die AZ der Kommandozeilenargs Null is.

else

     echo "I need one argument!"

fi
 
Zurück
Oben