Warum +=1 beim Hochzählen einer Variablen? (Linuxserveradministration Anfängerfrage)?

3 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

i += 1 ist die Kurzform für i = i+1

i+1 würde i ja nicht vergrößern daher die Zuweisung mit dem =

Tichuspieler 
Fragesteller
 06.07.2023, 21:51

Heiho,

erst einmal Danke für Deine Antwort.
Das mit der Kurzform (darf ich eigentlich auch die Langform bei einer solchen Aufgabe schreiben? Für mich wäre das einfacher zu verstehen) verstehe ich. Wenn ich Deinen zweiten Satz richtig deute, steht das i+1 sozusagen im luftleeren Raum. Es braucht das Gleichheitszeichen dafür, dass i+1 weiß, zu wem es gehört.
Habe ich das richtig interpretiert? Oder ist da noch ein Denkfehler in meinem Kopf?

0
Kelec  06.07.2023, 21:53
@Tichuspieler

Du schreibst im wesentlichen einzelne Operationen.

i + 1 liefert zunächst mal nur ein Ergebnis es steht aber nicht was mit diesem Ergebnis passieren soll.

Das was du eigentlich willst ist es der Variable i einen Wert zuzuweisen welcher um 1 größer ist als i zu diesem Zeitpunkt, daher stehen da auch zwei Operationen zum einen.

i + 1

und anschließend die Zuweisung dieses Wertes an i.

Du kannst auch die lange Form schreiben, syntaktisch sollte da denke ich nichts dagegen sprechen.

2
Tichuspieler 
Fragesteller
 06.07.2023, 21:57
@Kelec

Dann habe ich es verstanden :-) Vielen lieben Dank für Deine Hilfe :-) :-)

0

Es ist eine Zuweisung gemischt mit einem Operator. Damit sagst du quasi, dieser Variable soll ihr eigener Wert plus das was hinter dem Operator steht zugewiesen werden.

Wenn es nur um das senken und erhöhen von Variablen geht gibt es in vielen Sprachen auch i++ oder i--

Vielleicht machen die beiden Ausgaben den Sinn der Angabe "+=#" klarer. De-facto sagt das nämlich um wie viel hochgezählt werden soll (und wer nur um eins hochzählen will kann auch nur "i++" schreiben)

+=2

$:~> for ((i=0;i<11;i+=2)); do echo $i; done
0
2
4
6
8
10

+=4

$:~> for ((i=0;i<11;i+=4)); do echo $i; done
0
4
8

Anmerkung: Alles was ich über Shell-Skripting schreibe bezieht sich auf die Bourne Again Shell (bash) und teste ich damit. Andere Shells können andere Ergebnisse produzieren.