Skriptanalyse.
bearbeitet von Raketenwilli**1. Kontrolliere bitte, was Dein Skript macht.**
~~~bash
#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
~~~bash
set -x
~~~
als Zeile nach der Shebang. Was das ist folgt:
**2. Wie (zum Teufel!) startest Du das Skript eigentlich?**
Mit der Shebang
~~~bash
#!/bin/sh
~~~
und direkt gestartet wirft es den Fehler, dass in Zeile 3, die da lautet:
~~~bash
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](https://wiki.ubuntuusers.de/Shebang_f%C3%BCr_Shellskripte/)“ muss also `#!/usr/bin/bash` lauten.
Skriptanalyse.
bearbeitet von Raketenwilli**1. Kontrolliere bitte, was Dein Skript macht.**
~~~bash
#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
~~~bash
set -x
~~~
als Zeile nach der Shebang. Was das ist folgt:
**2. Wie (zum Teufel!) startest Du das Skript eigentlich?**
Mit der Shebang
~~~bash
#!/bin/sh
~~~
und direkt gestartet wirft es den Fehler, dass in Zeile 3, die da lautet:
~~~bash
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.
Skriptanalyse.
bearbeitet von Raketenwilli**1. Kontrolliere bitte, was Dein Skript macht.**
~~~bash
#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)**
~~~bash
set -x
~~~
als Zeile nach der Shebang. Was das ist folgt:
**2. Wie (zum Teufel!) startest Du das Skript eigentlich?**
Mit der Shebang
~~~bash
#!/bin/sh
~~~
und direkt gestartet wirft es den Fehler, dass in Zeile 3, die da lautet:
~~~bash
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.
Skriptanalyse.
bearbeitet von Raketenwilli**1. Kontrolliere bitte, was Dein Skript macht.**
~~~bash
#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)**
~~~bash
set -x
~~~
als Zeile nach der Shebang. Was das ist folgt:
**2. Wie zum Teufel startest Du das Skript eigentlich?**
Mit der Shebang
~~~bash
#!/bin/sh
~~~
wirft es den Fehler, dass in Zeile 3, die da lautet:
~~~bash
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.
Skriptanalyse.
bearbeitet von RaketenwilliKontrolliere bitte, was Dein Skript macht.
~~~bash
#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.
**2. Wie zum Teufel startest Du das Skript eigentlich?**
Mit der Shebang
~~~bash
#!/bin/sh
~~~
wirft es den Fehler, dass in Zeile 3, die da lautet:
~~~bash
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.