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“.