verstehe nicht: echo $((a%b?a/b+1:a/b))

kongstrong

Well-Known Member
Moin Leut'z

ich versuche in einem shellscript /bin/sh ein wenig prozent rechnen und mit Ausgabe ohne Kommawerte, dabei habe ich per Suchmachine folgendes entdeckt:

Code:
echo $((a%b?a/b+1:a/b))

was genau passiert hier ?
was bedeutet: das %, das ? und der :
Wo kann man mehr dazu nachlesen ?
 

Rosendoktor

Well-Known Member
Gib a und b einfach Werte und probier' aus was rauskommt... :)

Zum "?" und dem ":": Falls a%b wahr ist, wird a/b+1 ausgeführt, ansonsten a/b
 

SierraX

Well-Known Member
Das % ist modulo also der Restwert wenn eine ganz Zahl durch eine andere ganz Zahl geteilt möglicherweise kein Restloses Ergebnis liefert. In der "Integer" Mathematik würde z.B. eine Division 7/2 = 3 ergeben. Da das nur die halbe Wahrheit ist braucht man ggf noch den Restwert 7%2 = 1. Um jetzt z.B. auf die Zahl zu kommen die hinter einem Komma stehen würde, nimmt man diese Zahl multipliziert sie mit der nächst höher gelegenen 10er Potenz und teilt das Produkt durch den Divisor der ersten Rechnung also 1*10/2 = 5.
Gerade zur Primzahlen Berechnung ist das sehr hilfreich. Da, sobald also modulo 0 rauskommt der Divisor aber grösser 1 und kleiner als der Dividend ist hat man einen Teiler gefunden. Was die Zahl als Primzahl disqualifiziert.
 
Oben