Werte einlesen mit read Der Kommandozeileninterpreter Bash Verzweigungen Inhalt Index


Berechnungen

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:



Arithmetische Substitution

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.


Beispiele

   
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


Werte einlesen mit read Der Kommandozeileninterpreter Bash Verzweigungen Inhalt Index