a) Für die Funktionsweise macht es keinen Unterschied, aber aus ergonomischen Gründen (Lesbarkeit, Übersichtlichkeit) benutzt man in Shellscripten nur ausnahmsweise ein Semikolon und stattdessen Zeilenumbrüche. Semikolons sind interaktiv, für Wegwerfcode, geeignet.
b) Jedes if muss mit fi geschlossen werden, jedes do mit done.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 |
# Pfade zu den Verzeichnissen mit den ZIP-Dateien
NETWORK_MOUNT_PATH=/media/administrator/28a00382-4261-407c-983d-f0e37c8001bf/SAB-Data
# Durchlaufe alle Verzeichnisse im Ordner
for dir in "$NETWORK_MOUNT_PATH/*"
do
if [ -d "$dir" ]
then
# Durchlaufe alle ZIP-Dateien im aktuellen Verzeichnis
for zipfile in "$dir/*.zip"
do
if [ -f "$zipfile" ]
then
# Entpacke die ZIP-Datei im selben Verzeichnis
unzip -o "$zipfile" -d "$dir"
fi
done
fi
done
|
Mehr habe ich hier nicht beachtet, außer einem:
/media/administrator/28a00382-4261-407c-983d-f0e37c8001bf/SAB-Data enthält kein Zeichen, welches der Maskierung bedarf. Also habe ich die Anführungsstriche entfernt.
Dagegen kann der Stern in "$NETWORK_MOUNT_PATH/*" der Maskierung bedürfen, daher habe ich da die Maskierung bis zu dem Punkt, wo sie relevant werden könnte, erweitert. Analog in "$dir/*.zip".
Weitere Prüfungen habe ich nicht durchgeführt. Ein Tool, um allfällige Fehler zu finden, ist shellcheck.
Das findet keine semantischen Fehler, wenn das Programm nicht macht, was Du willst, aber was Du gesagt hast (geschrieben) und es neigt zum Overreporting, also bemängelt auch nicht selten Sachen, die nicht falsch sein können. Die Vorschläge, die es macht, schaden dann aber auch - nach meiner Erfahrung - nicht (außer beim Lernerfolg, insbes.: Quoting verstehen).