Raketenwilli: Skriptanalyse.

Beitrag lesen

1. Kontrolliere bitte, was Dein Skript macht.

#Alle Dateien anschließend auf 640 setzen
find -type f -print0 | xargs -0 -r -t chmod 640

#Alle Verzeichnisse (bis auf Ausnahmen) auf 750 setzen
find \( -path "./Exclude1"  -o -path "./Exclude2/temp" -o -path "./Exclude3/temp2" -o -path "./Exclude4" \) -prune -o -type d -print0 | xargs -r -t -0 chmod 750

Die hinzugefügten Optionen für xargs sind:

  • -r : Starte den Befehl nicht, wenn String leer ist.
  • -t : Gib den Befehl mit dem Argument aus.

1.a (Alternative)

Um wirklich alle ausgeführten Befehle zu sehen, setze

set -x

als Zeile nach der Shebang. Was das ist folgt:

2. Wie (zum Teufel!) startest Du das Skript eigentlich?

Mit der Shebang

#!/bin/sh

und direkt gestartet wirft es den Fehler, dass in Zeile 3, die da lautet:

myAlles=('Verz1' 'Verz2' 'Verz3')

ein Syntaxfehler sei und beendet sich. Das ist auch richtig, weil die „Urshell“ (/usr/bin/sh) tatsächlich „keine Arrays kann“.

Die „Shebang“ muss also #!/usr/bin/bash lauten.