![]() ![]() ![]() |
![]() ![]() |
Die Bash ist kein Taschenrechner. Dennoch besitzt sie ein erstaunliches Potenzial an eingebauten Rechenoperationen, die -- nach Prioritäten geordnet -- nachfolgende Tabelle zusammenfasst:
Operator | Bedeutung | |
+ - | 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 |
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:
10#63
8#77
16#3f
Die so genannte arithmetische Substitution ist der gebräuchliche Weg, um Berechnungen durchzuführen:
$[...]
$((...))
Die neuen Bash-Versionen verstehen auch die alte Syntax; in den folgenden Beispielen wird aber nur die neuere Schreibweise verwendet.
user@sonne> b=5; b=$((b+1)); echo $b 6 user@sonne> a=$((b+=10)); echo $a 16 user@sonne> echo $(a>b?1:0) 1 user@sonne> echo $((8#17**2)) 225 user@sonne> echo $((017**2)) 225 user@sonne> echo $((-0x64*3#11%6)) -4 user@sonne> 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:
user@sonne> b="Ist b keine Zahl, wird b zu 0 konvertiert" user@sonne> echo $b Ist b keine Zahl, wird b zu 0 konvertiert user@sonne> b=$(($b+1)); echo $b 1
Ein einfacher Weg zur Durchführung einer Berechnung ist die Verbindung einer Variablen mit einem bestimmten Typ:
user@sonne> declare -i a=3
Die Variable a
ist eine Ganzzahl und wird mit 3 initialisiert.
Mit einer solchen typisierten Variablen lässt sich "ganz normal" rechnen:
user@sonne> a=a+3; echo $a 6 user@sonne> a=3**a; echo $a 729
Ohne die Typisierung bemühen zu müssen, kann man alternativ das builtin Kommando
let
verwenden:
user@sonne> let y="8%2" user@sonne> echo $y 0
![]() ![]() ![]() |
![]() ![]() |