Benutzer-Werkzeuge

Webseiten-Werkzeuge


 [[anwenderwiki:scripting:bashscripte]] 

Einfache Shell Scripte

Sihe auch → http://www.linux-services.org/shell/shell.html

Jedes selbstständige Shell-Script beginnt mit dem zugehörigen Interpreter in der ersten Zeile (nach den beiden shebang-Zeichen „#!“):

#! /bin/sh

Shell-Scripte müssen per chmod auf ausführbar gesetzt sein.

Variablen

Variable zuweisen

text = "Hallo"

Variable verwenden, in doppelten Anführungszeichen wird die Variable durch ihren Inhalt ersetzt.

echo "$text"

Text ausdrucken, ohne die Variable zu ersetzen:

echo '$text'

Die Übergabeparameter an das Script sind in den folgenden Variablen abgelegt:

$1, $2, $3, ...

Bedingte Anweisungen

Grundstruktur:

if [Bedingung]; then
   <Befehlsblock>
else
   <Befehlsblock>
fi

Bedingungen:

["$text" = "Hallo"]    # Test mit Variable $text
["$text" != "Hallo"]   # Verneinung der Bedingung
[-f "/etc/test"]       # Test auf Existenz einer Datei
[-d "/etc/test"]       # Test auf Existenz einer Datei oder Verzeichnisses
[$Zaehler -le 10]      # Bedingung für kleiner/gleich (less+equal)
                       # bei Zahlen folgende Vergleiche verwenden: -ne -eq -lt -gt -le -ge
if eval "ping -c1 10.16.1.1 > /dev/null"
then
  echo "server läuft"
fi

UND („&&“) und ODER („||“) Verknüpfungen:

if [ "$text" == "Hallo" ] && [ "$user" == "Otto" ]; then
  echo "User und Text sind richtig";
fi

Schleifen

Beispiel, das die Buchstaben „a,b,c,d,e“ ausdruckt:

for z in a b c d e
do
   echo $z
done

Numerische Berechnungen

anzahl="10"
anzahl=$(( $anzahl-3+(30*5)/7 ))
echo "$anzahl"

Die doppelten runden Klammern schließen einen Rechenausdruck ein. Es werden damit nur Berechnungen mit Integer-Zahlen ausgeführt.
Weitere Möglichkeit: Rechnen mit dem Befehl „bc“ und die here-string-Pipe-Notation mit dreifachem „<“, rechnet mit Dezimalzahlen. Die Anzahl der Nachkommastellen kann mit „scale=n“ festgelegt werden. Mathematische Funktionen wie z.B. Sinus sind mit der Library-Option „bc -l“ verfügbar.

a=6
b=5.77
e=`bc <<< "($a+$b-0.5)"`
echo "Ergebnis: $e"

Tutorial zu bc und Berechnungen in der bash

Pipes, Verkettungen, Umleitungen u.ä.

<Befehl1> ; <Befehl2>         # Befehle hintereinander ausführen (wenn sie in einer Zeile stehen)
<Befehl1> && <Befehl2>        # Befehlsverkettung: Befehl-2 wird nur ausgeführt, wenn der erste Befehl korrekt/fehlerfrei durchgeführt wurde
<Befehl1> || <Befehl2>        # Befehlsverkettung: Befehl-2 wird nur ausgeführt, wenn der erste Befehl nicht korrekt/fehlerfrei durchgeführt wurde
<Befehl1> >> /root/log.txt    # Ausgabe des Befehls-1 wird in die Datei log.txt geschrieben
<Befehl1> | <Befehl2>         # Pipe, die (Text-) Ausgabe des Befehls-1 wird an Befehl-2 übergeben
<Befehl1> &                   # Der Befehl wird im Hintergund abgearbeitet, das Script läuft ohne Warten weiter
 [[anwenderwiki:scripting:bashscripte]] anwenderwiki/scripting/bashscripte.txt · Zuletzt geändert: 2013/10/18 18:07 (Externe Bearbeitung)