Benutzer-Werkzeuge

Webseiten-Werkzeuge


 [[anwenderwiki:scripting:bashscripte]] 

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

anwenderwiki:scripting:bashscripte [2013/10/18 18:07] (aktuell)
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 18:07 (Externe Bearbeitung)