Heute soll es um das Thema Arrays im Bashscript gehen.
Ein Array ist dabei eine Art besondere Variable/Speicher, welche/r mehrere Strings beinhalten kann.
z.B. kann im Array arDateien stehen: datei1 datei2 datei3 und diese möchte man anschließend über eine For-Schleife laufen lassen.
Hinweis: Ein Array beginnt bei Index 0 !
array1.sh
#!/bin/bash
arDateien=(datei1 datei2 datei3)
for datei in ${arDateien[*]} ;do
echo "${datei}"
done
# Ausgabe:
# --------
# datei1
# datei2
# datei3
echo ${arDateien[1]}
# Ausgabe: datei2
echo ${arDateien[*]}
# Ausgabe: datei1 datei2 datei3
Ich nutze Arrays gern zur gesammelten Dateiabfrage (z.B. zur Überprüfung, ob alle Dateien erzeugt wurden)
array2.sh
#!/bin/bash
home="/home/julien/"
arDateienRW=("${home}datei1" "${home}datei2" "${home}datei3")
for datei in arDateienRW[*]; do
echo ${datei}
touch ${datei}
if [ ! -r ${datei} ] || [ ! -w ${datei} ]; then
echo "Fehler bei Zugriffsrechten der Datei: \"${datei}\""
exit 1
fi
done
Nun noch einige nützliche Tipps zu Arrays:
tipps.sh
# listet alle Werte auf
$ echo "${arDateien[*]}"
# listet ebenfalls alle Werte auf
$ echo "${arDateien[@]}}"
# gibt der Anzahl der Elemente aus
$ echo "${#arDateien[*]}"
# gibt die Länge des entsprechenden Eintrags zurück
$ echo "${#arDateien[1]}"
# löschen eines gesamten Arrays
$ unset ${arDateien[*]}
# löschen eines Eintrags
$ unset ${arDateien[1]}
# kopieren eines gesamten Arrays
$ arDateien_copy=(${arDateien[*]})
# Arrayindex belegen
$ arDateien[50]="Inhalt"
# Schreibschutz verwenden
typeset -r arDateien
Alle drei Scripte gibt es wie gewohnt hier zum „Download“.