Alles innerhalb von $(())
steckt in einer Arithmetic Expansion. Die Operatoren dafür sind in https://www.gnu.org/savannah-checkouts/gnu/bash/manual/bash.html#Shell-Arithmetic beschrieben. Das Ergebnis der Expansion ersetzt diese (mit (( ))
würde das Ergebnis nicht ausgegeben).
Innerhalb dieser Umgebung kann man auf Variablen-Werte ohne extra $
zugreifen. ++
vor einer Variable inkrementiert sie vor weiteren Operationen, also wird durch ++line_count
als erstes der Wert der Variable line_count
um eins erhöht und der nachfolgende Operator ist für den Modulo, liefert also den Rest der Division durch step
.
Das if-Konstrukt drum herum sollte klar sein, das schaut einfach, ob die Ausgabe der arithmetischen Expansion (also der Rest der Divison von line_count
durch step
) 0 ist.