Hi,
ich habe ein Shellscript geschrieben, dass mir einige Dateien kopieren soll, aber ich kriege immer dieselbe Fehlermeldung und bin schon am Verzweifeln:
[nils@nils ~]$ ./skript
./wrestlingskript: line 11: syntax error near unexpected token `then'
./wrestlingskript: line 11: ` if [[ -f $i ]]; then pfad2=`basename $i`;'
Zeile 11 ist:
if [[ -f $i ]]; then pfad2=`basename $i`;
Wenn ich das if entferne, kommt:
./skript: line 5: #: command not found
./skript: line 9: for: command not found
./skript: line 10: do: command not found
basename: fehlender Operand
„basename --help“ gibt weitere Informationen.
./skript: line 13: pf ad2=: command not found
./skript: line 16: #: command not fou nd
./skript: line 17: mv: command not fo und
Muster mnt/festplatte/serien 2 in mnt/festplatte/serien nicht gefunden
./skript: line 21: done: command not found
Da finde ich die erste Meldung ja richtig komisch, wieso versucht er # zu interpretieren ?
Das script als Ganzes:
#!/bin/sh
themen=( party geburtstag urlaub );
for j in $themen;
do pfad=mnt/festplatte/$j;
# alt
altifs=$IFS;
# leerzeichen trennt keine arrays
IFS=`echo -en "\n\t"`;
for i in `find /mnt/festplatte/NEU -maxdepth 1 -print0 -iname '*$j*'`;
do
if [[ -f $i ]]; then pfad2=`basename $i`;
pfad2=${pfad2%.*};
else pfad2={i%/*};
fi;
# gefundene videos in richtige ordner verschieben und quellen loeschen
mv $i $pfad;
if [ $pfad/*$pfad2*.quelle == $pfad/\*$pfad2\*.quelle ];
then echo "Muster $pfad 2 in $pfad nicht gefunden";
else find $pfad -type f -maxdepth 1 -iname '*$pfad2*.quelle' -print0 | xargs -0 rm; fi;
done;
done;
unset j; unset i; unset themen; unset pfad; unset pfad2;
IFS=$altifs;
#IFS=`echo -en "\n\t "`;
echo "Rest:";
find /mnt/festplatte/NEU;
Kann mir irgendjemand sagen, wieso das nicht funktioniert ?