Benutzer-Werkzeuge

Webseiten-Werkzeuge


 [[anwenderwiki:scripting:bashscripte]] 
no way to compare when less than two revisions

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.


anwenderwiki:scripting:bashscripte [2013/10/18 20:07] (aktuell) – angelegt - Externe Bearbeitung 127.0.0.1
Zeile 1: Zeile 1:
 +{{tag> bash scripting}}
  
 +====== 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"
 +
 +[[http://linuxint.com/DOCS/Linux_Docs/openbook_shell/shell_004_001.htm#RxxKap00400104004DAD1F01D1BE|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 20:07 von 127.0.0.1