Bash/Arithmetische Substitution
Bash/Arithmetische Substitution
Beschreibung
- Eingebauten Rechenoperationen
| VAR++ and VAR-- | variable post-increment and post-decrement |
| ++VAR and --VAR | variable pre-increment and pre-decrement |
| + - | Einstelliger Operator (Vorzeichen) |
| ! ~ | Logische und bitweise Negation |
| ** | Exponentialfunktion |
| * / % | Multiplikation, Division und Modulo-Operator |
| + - | Addition, Subtraktion |
| << >> | Bitweise Links-/Rechtsverschiebung |
| <= >= < > | Vergleiche |
| == != | Gleichheit und Ungleichheit |
| & | Bitweises UND |
| ^ | Bitweises Exclusive ODER |
| | | Bitweises ODER |
| && | Logisches UND |
| '''|| ''' | Logisches ODER |
| expr ? expr : expr | Bedingte Zuweisung |
| =, *=, /=, %=, +=, -= <<=, >>=, &=, ^=, |= | Zuweisungen |
| , | separator between expressions |
Als Operanden sind Konstanten und Shellvariablen (deren Inhalt als long integer betrachtet wird) erlaubt. Beginnt eine Konstante mit "0", dann wird sie als oktale Zahl verstanden; steht "0x" am Anfang, handelt es sich um eine hexadezimale Konstante.
Konstanten können zu jeder Basis zwischen 2 und 64 angegeben werden, so kann die Zahl 63 u.a. wie folgt dargestellt werden:
- Zur Basis 10: 10#63
- Zur Basis 8: 8#77
- Zur Basis 16: 16#3f
Die arithmetische Substitution ist der gebräuchliche Weg, um Berechnungen durchzuführen:
- Bash Versionen <2: Der zu berechnende Ausdruck wird in eckigen Klammern geschrieben: $[...]
- Bash ab Version 2: Der zu berechnende Ausdruck wird in doppelte runde Klammern geschrieben: $((...)) (die alte Syntax wird weiterhin unterstützt)
Aufruf
Optionen
| Unix | GNU | Parameter | Beschreibung |
|---|---|---|---|
Parameter
Umgebungsvariablen
Exit-Status
| Wert | Beschreibung |
|---|---|
| 0 | Erfolg |
| >0 | Fehler |
Anwendung
b=5; b=$((b+1)); echo $b
6
a=$((b+=10)); echo $a
16
echo $((a>b?1:0))
1
echo $((8#17**2))
225
echo $((017**2))
225
echo $((-0x64*3#11%6))
-4
echo $((4<<1))
8
Wird als Operand eine Variable benutzt, so wird versucht, deren Inhalt in eine Ganzzahl zu konvertieren. Enthält die Variable keine Zahl, wird der Inhalt zu "0" konvertiert:
b="Ist b keine Zahl, wird b zu 0 konvertiert"
echo $b Ist b keine Zahl, wird b zu 0 konvertiert
b=$(($b+1)); echo $b
1
Konfiguration
Dateien
| Datei | Beschreibung |
|---|---|
Anhang
Siehe auch
Dokumentation
Links
Projekt
Weblinks