Benutzer-Werkzeuge

Webseiten-Werkzeuge


bash

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Nächste Überarbeitung
Vorhergehende Überarbeitung
bash [2014/09/07 18:23]
127.0.0.1 Externe Bearbeitung
bash [2022/07/19 13:38] (aktuell)
root [Übergabe an andere Programme]
Zeile 1: Zeile 1:
-===== Navigation/Tastenkombinationen =====+{{tag>linux}} 
 + 
 + 
 +====== Navigation/Tastenkombinationen ======
  
 ^Kombination ^Bedeutung ^ ^Kombination ^Bedeutung ^
Zeile 11: Zeile 14:
 |Strg+l|Lösche alle Eingaben auf dem Terminal -> entspricht clear| |Strg+l|Lösche alle Eingaben auf dem Terminal -> entspricht clear|
  
-===== Konstrukte =====+====== Konstrukte ======
  
-==== for-each-Schleife ====+===== for-each-Schleife =====
  
   * Durchläuft die Schleife für alle Elemente eines Arrays/einer Hash-Map   * Durchläuft die Schleife für alle Elemente eines Arrays/einer Hash-Map
Zeile 36: Zeile 39:
 </code> </code>
  
-==== Programme aufrufen/ Andere Scripte aurufen ====+ 
 + 
 +===== for-Zählschleife ===== 
 + 
 +  * Geht nur ohne Variablen (mit festen Werten) direkt in Bash 
 + 
 +Syntax: 
 +<code> 
 +for i in {x..y}; do 
 +       code; 
 +done 
 +</code> 
 + 
 +Beispiel: 
 +for i in {1..5}; do 
 +       Echo "Hallo" 
 +done 
 +</code> 
 + 
 +Obiges Beispiel gibt 5 mal Hallo aus. 
 + 
 +  * Mit Variablen muss man das externe "seq" benutzen 
 + 
 +Syntax: 
 +<code> 
 +for i in $(seq $a $b); do 
 +    code 
 +done 
 +</code> 
 + 
 +Beispiel: 
 +<code> 
 +a=5 
 +for i in $(seq 1 $a); do 
 +    echo "Hallo" 
 +done 
 +</code> 
 + 
 +Obiges Beispiel gibt 5 mal Hallo aus 
 + 
 +===== Programme aufrufen/ Andere Scripte aurufen =====
  
 Syntax: //Rückgabevariable//=$(//Befehl//) \\ \\ Syntax: //Rückgabevariable//=$(//Befehl//) \\ \\
Zeile 47: Zeile 90:
  
  
-===== Variablen ===== +====== Variablen =====
-==== Arrays ====+ 
 +====== Arrays =====
  
     * Können Deklariert werden     * Können Deklariert werden
Zeile 54: Zeile 98:
     * += Fügt einen weiteren Wert dem Array hinzu (Bla+=Test)     * += Fügt einen weiteren Wert dem Array hinzu (Bla+=Test)
  
-==== Associative Arrays/Hash-Maps ====+===== Associative Arrays/Hash-Maps =====
  
   * Verfügbar ab Bash-Version 4   * Verfügbar ab Bash-Version 4
Zeile 70: Zeile 114:
  
  
-==== Multidimensionale Arrays ====+===== Multidimensionale Arrays =====
  
   * Verfügbar ab Bash Version 4   * Verfügbar ab Bash Version 4
Zeile 82: Zeile 126:
 **Achtung:** Gemischte multidimensionale Arrays (in denen ein Index ein String und der andere eine Zahl ist) scheinen zwar keine Fehler-Ausgaben zu produzieren, aber auch nicht zu funktionieren (beim Auslesen wird immer das ausgegeben was im ersten Feldhinterlegt ist). **Achtung:** Gemischte multidimensionale Arrays (in denen ein Index ein String und der andere eine Zahl ist) scheinen zwar keine Fehler-Ausgaben zu produzieren, aber auch nicht zu funktionieren (beim Auslesen wird immer das ausgegeben was im ersten Feldhinterlegt ist).
  
-===== Operatoren =====+====== Operatoren ======
  
 ^Operator ^Erklärung ^ ^Operator ^Erklärung ^
Zeile 91: Zeile 135:
  
  
-===== Debugging/Prüfen =====+====== Anführungszeichen und Single-Quotes ====== 
 + 
 +  * Zeichenketten in <code>'</code> und <code>"</code> verhindern/erlauben das expandieren (Steuerbefehle und Variablennamen werden entsprechend ersetzt/interpretiert) von Variablennamen und Steuerbefehlen 
 +      * <pre>"</pre> -> expandiert die Zeichenkette (interpretiert sie) 
 +      * <code>'</code> -> expandiert die Zeichenkette nicht, sondern nimmt sie so wie sie da steht (literal, wörtlich) 
 + 
 +<sxh bash> 
 +a=5 
 +echo "$a" 
 +
 +</sxh> 
 + 
 +Die Zeichenkette hinter "echo" wird expandiert. "$a" wird durch den Wert der Variable (5) ersetzt. \\ 
 +Dementsprechend wird "5" ausgegeben 
 + 
 +<sxh bash> 
 +a=5 
 +echo "$a" 
 +$a 
 +</sxh> 
 + 
 +Die Zeichenkette hinter "echo" wird nicht expandiert/interpretiert. "$a" bleibt der String "$a und wird nicht durch den Inhalt der Variablen ersetzt \\ 
 +Dementsprechend wird "$a" ausgegeben. 
 + 
 +===== Übergabe an andere Programme ===== 
 + 
 +Es gibt Programme die Shellkommandos übernehmen um sie dann beim eintreten bestimmter Bedingungen auszuführen. \\ 
 +Man muss aufpassen ob man die Shell-Befehlskette die man übergibt in %%"%% oder %%'%% setzt! 
 + 
 +<sxh bash> 
 +mycommand -c "echo $a" 
 +</sxh> 
 + 
 +  * da der Wert für Parameter "-c" in %%"%% angegeben wurde wird er vor! der Übergabe an mycommand ausgewertet und erhält den Wert von "a" auf der aktuellen Shell. 
 +      * ist "a" auf der aktuellen Shell 5, bekommt mycommand "echo 5" übergeben und nicht! "echo $a" 
 + 
 + 
 +<sxh bash> 
 +mycommand -c 'echo $a' 
 +</sxh> 
 + 
 +  * da der Wert für Parameter "-c" in %%'%% angegeben wurde wird er nicht vor der Übergabe an mycommand ausgewertet 
 +      * d.h. mycoomand bekommt "echo $a" übergeben 
 +====== Debugging/Prüfen ======
  
-==== Validieren ====+===== Validieren =====
  
   * Überprüft syntaktische Korrektheit der Bash-Befehle   * Überprüft syntaktische Korrektheit der Bash-Befehle
Zeile 101: Zeile 188:
  
  
-==== Debugausgaben ====+===== Debugausgaben =====
  
   * Gibt aus welche Befehle ausgeführt werden und welche Variablen wie belegt wurden   * Gibt aus welche Befehle ausgeführt werden und welche Variablen wie belegt wurden
Zeile 108: Zeile 195:
  
  
-==== Debuging ====+===== Debuging =====
  
   * ermöglicht Schritt-für-Schritt-Ausführung von Scripten   * ermöglicht Schritt-für-Schritt-Ausführung von Scripten
Zeile 124: Zeile 211:
 |W|watchpoint \\ \\ Überwache eine bestimmte Variable und Stoppe an Stellen wo der Wert geändert wird \\ \\ Syntax: w //Variablenname// \\ \\ **Achtung:**Das geht erst nach dem die Variable das erste mal benutzt (deklariert/definiert) wurde. Bedeutet man muss erst mal bis zu einem Punkt gehen wo diese Variable genutzt wird -> erst dort kann dann w //Variablenname// genutzt werden. Von dort aus kann man dann per c (continue) automatisch weiterlaufen lassen| |W|watchpoint \\ \\ Überwache eine bestimmte Variable und Stoppe an Stellen wo der Wert geändert wird \\ \\ Syntax: w //Variablenname// \\ \\ **Achtung:**Das geht erst nach dem die Variable das erste mal benutzt (deklariert/definiert) wurde. Bedeutet man muss erst mal bis zu einem Punkt gehen wo diese Variable genutzt wird -> erst dort kann dann w //Variablenname// genutzt werden. Von dort aus kann man dann per c (continue) automatisch weiterlaufen lassen|
  
-===== Externe Informationen =====+====== Externe Informationen ======
  
 ^Typ ^Name ^Beschreibung ^URL ^ ^Typ ^Name ^Beschreibung ^URL ^
 |Wiki|Bash-Hackers|Wiki über die Bash-Programmierung|http://wiki.bash-hackers.org| |Wiki|Bash-Hackers|Wiki über die Bash-Programmierung|http://wiki.bash-hackers.org|
bash.1410107038.txt.gz · Zuletzt geändert: 2015/10/04 20:24 (Externe Bearbeitung)