Table of Contents

 nano zahlen.sh
#!/bin/bash
 
for zahl in 1 2 3 4;
    do
        printf "Zahl ist die ${zahl}\n"
    done
Anschließend ausführbar machen

 chmod u+x zahlen.sh
#!/bin/bash
data=zentrum
for fach in Deutsch Sport Mathe Physik; 
do
        for name in King Lion Duck; 
		do
                mkdir -p $data/$fach/$name
                touch $data/$fach/$name/${name}_adresse.txt
                touch $data/$fach/$name/${name}_bankdaten.txt
        done
done

Variablen

Variablennamen werden in {} geschrieben, um sie klar zu referenzieren.

my_var="hello"
echo "${my_var}world"  # Gibt "helloworld" aus

Arrays

my_array=("apple" "banana" "cherry")
echo "${my_array[@]}"
for item in "${my_array[@]}"; do
  echo "$item"
done

Eckige [] statt runder Klammern ()

In vielen Programmiersprachen werden runde Klammern () verwendet, um Bedingungen oder Ausdrücke zu gruppieren. In Bash und anderen Shell-Skriptsprachen jedoch eckige Klammern [] oder doppelte eckige Klammern [[]]

Bash (Shell-Skript)

  if [ "$variable" = "value" ]; then
    echo "Die Variable ist gleich value."
  fi
 

  if [[ "$variable" == "value" && -f "datei" ]]; then
    echo "Die Variable ist gleich value und die Datei existiert."
  fi
 

Erklärung

Shellskript: Namen aus einer Datei lesen + Ordner erstellen

#!/bin/bash
 
# Datei, die die Namen enthält
datei="namen.txt"
 
# Überprüfen, ob die Datei existiert
if [[ ! -f "$datei" ]]; then
  echo "Die Datei $datei existiert nicht."
  exit 1
fi
 
# Zeilenweise die Datei lesen und Ordner erstellen
while IFS= read -r name; do
  # Leere Zeilen überspringen
  if [[ -n "$name" ]]; then
    # Ordner erstellen
    mkdir -p "$name"
    echo "Ordner $name erstellt."
  fi
done < "$datei"

Erklärung:

IFS steht für “Internal Field Separator” und ist eine spezielle Umgebungsvariable in der Unix-Shell, die verwendet wird, um die Zeichen zu definieren, die als Worttrenner (Delimiter) fungieren, wenn die Shell eine Zeichenkette in einzelne Wörter aufteilt. Standardmäßig enthält IFS die Zeichen Leerzeichen, Tabulator und Zeilenumbruch.

Verwendung von ''%%IFS%%''

Beispiel

Im vorherigen Skript wurde IFS= verwendet, um sicherzustellen, dass führende und nachfolgende Leerzeichen in den Zeilen der Datei nicht entfernt werden. Hier ist, was passiert:

while IFS= read -r name; do
  # Verarbeitung der Zeile
done < "$datei"

Durch das Setzen von IFS auf ein leeres Zeichen wird sichergestellt, dass die Zeilen genau so gelesen werden, wie sie in der Datei stehen, ohne dass sie in mehrere Teile aufgeteilt werden.