Hier werden einige grundlegende Konzepte der Programmierung in der Bash vorgestellt. Details sind bitte in bash(1) nachzulesen. Dabei ist zu beachten, daß das meiste hier gesagte für alle POSIX/sh-kompatiblen Shells gilt. == Algemeines Im allgemeinen ist es egal, ob man Kommandos einzeln auf der Kommandozeile eingibt oder in einem file zur wiederholten abarbeitung ablegt. == Variablen === "Normale" Variablen Durch ein einfaches [[Code]variablenname=Wert] wird die eine Variable erzeugt und belegt. === Environment Variablen Das Environment eines Prozesses sind externe Variablenbelegungen, die einem Programm beim Start mitgegeben werden, von diesem modifiziert werden und an seine Kindprozesse weitergegeben wird. In der bash kann eine Variable durch [[Code]export variablenname] in das Environment aufgenommen werden. Damit werden meist Defaultwerte oder userspezifische Einstellungen für Programme gesetzt. === Expandieren von Variablen Variablen werden mit [[Code]$variablenname] angesprochen. == Wildcards Die einfachen "Glob" Wildcards in POSIX kennen folgende Elemente: * "?": Genau ein beliebiges Zeichen * "*": Beliebig viele Zeichen (auch null) Anmerkung für WindowsUmsteiger: das inkludiert auch Punkte * "[abc]": "a" oder "b" oder "c" == Interpretation einfacher Kommandos Nach der Bestätigung des Befehls auf der Kommandozeile wird dieser einmal an Spaces und TABs zerlegt. Variablen und andere Spezialitäten werden expandiert. Dann wird der Befehl exekutiert. Will man spezielle Zeichen der bash (Globs, Leerzeichen oder ähnliches) "escapen" (also unschädlich machen) kann man für einzelne Vorkommen den "\" benutzen. Für längere Abschnitte kann man einfache oder doppelte Anführungszeichen benutzen. Dabei unterdrücken einfache Anführungszeichen die Variablenerweiterung, doppelte nicht. == Ein-/ Ausgabe * Redirection, Pipes == Kommandos verknüpfen * "&&", "||", ";" == Konditionale * "if [ blah ] ; then :; fi" == Schleifen * "for i in blah ; do :; done" * "while true ; do sleep 1; done" == PitFalls? == Irgendwo bin ich gleich mal mit dem WhiteSpace [[Code] variable=wert variable= wert variable = wert ] auf Probleme gestossen. Gibt es allgemeine Regeln für WhiteSpace in den diversen Shells bei Zuweisungen, Bedingungen, etc... ??? == FeedBack == Wollt ihr mehr oder lest ihr Euch eh brav die man-page durch? ;-)) : Beides. Wir wollen mehr und lesen brav. :-) KategorieProgrammierBeispiele KategorieBash? |
Verschoben nach SpracheSh |