Woche 8
WEiterführung von Woche 4 (Bash), 5 (Vim + Bash), 6 (Bash) und 7 (Bash)
Indizierte Arrays
# Deklaration
array=(value1 value2 value3)
# Zugriff
echo ${array[0]} # value1
# Ersetzen
array[0]=new_value
echo ${array[0]} # new_value
# Länge
echo ${#array[@]} # 3
# Alle Elemente
echo ${array[@]} # value1 value2 value3
# Alle Indizes
echo ${!array[@]} # 0 1 2
Assoziative Arrays
# Deklaration
declare -A array
array[key1]=value1
array[key2]=value2
# Oder
array=([key1]=value1 [key2]=value2)
# Zugriff
echo ${array[key1]} # value1
# Ersetzen
array[key1]=new_value
# Prüfen auf Existenz
if [ -v array[key1] ]; then
echo "key1 exists"
fi
# Länge
echo ${#array[@]} # 2
# Alle Elemente
echo ${array[@]} # value1 value2
# Alle Indizes
echo ${!array[@]} # key1 key2
# Löschen
unset array[key1]
Variablen
# Deklaration
variable=value
# Zugriff
echo $variable # value
Expansion
Parameter
# Deklaration
variable=value
# Zugriff
echo $variable # value
# Länge
echo ${#variable} # 5
# Substring
echo ${variable:0:3} # val
# Ersetzen
echo ${variable/value/replace} # replace
# Default-Wert
echo ${new_variable:-default} # default
Brace
echo {1..5} # Sequenz: 1 2 3 4 5
mv file{1..3}.txt folder # mv file1.txt file2.txt file3.txt folder
Typkonvertierung
String zu Integer
string="42"
integer=$((string))
Integer zu String
integer=42
string="${integer}"
Crontab und cronjobs
- crontab: Datei, die die Zeitpunkte für cronjobs speichert
- cron: Daemon, der cronjobs ausführt
Struktur
# ┌───────────── Minute (0 - 59)
# │ ┌───────────── Stunde (0 - 23)
# │ │ ┌───────────── Tag des Monats (1 - 31)
# │ │ │ ┌───────────── Monat (1 - 12)
# │ │ │ │ ┌───────────── Wochentag (0 - 6) (Sonntag bis Samstag)
# │ │ │ │ │
# * * * * * Befehl
# Beispiel: Jeden Tag um 3 Uhr
0 3 * * * /pfad/zu/command
Das habe ich gelernt
- Das es auch hashmaps (Assoziative Arrays) in Bash gibt
- Das es eine Vielzahl an Expansion-Methoden gibt
- Das es ein großes Typisierungssystem in Bash gibt (Umformung von String zu Integer etc)
Mir ist wie die letzten Wochen erst wieder bewusst geworden, wie umfangreich Bash eigentlich ist. Ich hätte anfangs nicht gedacht, dass Bash eine richtige Programmiersprache ist (peinlich, aber wahr).