Schleifen Zeitmessung



  • hallo,

    ich wollte die Zeit von verschiedenen Befehlen in einem Script messen. Darunter auch leere Schleifen. Jedoch kriege ich jedesmal Syntaxfehler.

    Das Problem liegt bei der Funktion zeit(). Also in Zeile 28 kriege ich die Syntaxfehler.

    #!/bin/sh
    
    SCRIPTNAME=$(basename $0)
    LOOPCOUNT=3 
    
    usage(){
     echo "$SCRIPTNAME [-h|-i loopnumber]"
     exit 1
    }
    
    get(){
    while getopts :hi: opt; do
     case $opt in
      h) usage;;
      i) LOOPCOUNT=$OPTARG;;
      \?)echo "$SCRIPTNAME: Ungültiger Parameter -$OPTARG"
         exit 2;;
      :) echo "Option -$OPTARG braucht ein Argument"
         exit 2;;
      *) echo "$SCRIPTNAME: Interner Fehler"
         exit 3;;
     esac
    done
    
    }
    
    zeit(){
     time for (( i=0; i<LOOPCOUNT; i++ ));do : ;done
     time let product="3*9"
     time $((product=3*9))
    }
    
    main(){
    
     get $@
     zeit
     exit 1
    
    }
    
    main $@
    

  • Mod

    Das ist bash-Syntax, du hast in Zeile 1 aber ausdrücklich sh als Kommandointerpreter gewünscht.



  • Also bei mir kommt in Zeile 30 eine Fehlermeldung, dass er das Kommando 27 nicht findet. Die Zuweisung product=3*9 liefert ja 27 und wenn ich das so substituiere, dann will er den Befehl 27 ausführen.



  • ja das stimmt das ist wegen den ("") es muss let product=3*9 heißen und in zeile 31 product=$((3*9)).

    Und der fehler war das ich den sh-Interpreter definiert habe. Also jetzt funktionierts, dankeschön.


Anmelden zum Antworten