-
Was heißt bei Dir der such Befehl funktioniert?
Welche Ausgaben bekommst Du?
Ich kann Dir mal ein paar Tipps geben:
Hier mal ein Link zu einer guten Beschreibung über die Shell-Programmierung:
http://www.netzmafia.de/skripten/unix/index.html
Im Kapitel 8.7.1 findest Du z.B. wie man feststellt, ob eine Datei vorhanden ist:
test -e file
So schwierig sollte das Problem nicht sein.
Einfach mal etwas rumprobieren ;)
-
also wenn ich eingebe:
find /home/u/user08/public_html/test -name "datei_06.03.01.zip"
dann bekomme ich eben die ausgabe:
/home/u/user08/public_html/test/datei_06.03.01.zip
aber wenn ich eben dass shell script ausführen möchte kommt eben immer die selbe fehlermeldung, warum auch immer, was ich sehr komisch finde
-
Das versteh ich nicht.
Das muss doch gehen.
Und wie sieht's aus, wenn Du ein Skript erstellst und darin nur diesen einzigen Befehl hast:
find /home/u/user08/public_html/test -name "datei_06.03.01.zip"
-
#!/bin/bash
find /home/u/user08/public_html/test -name "datei_06.03.01.zip"
so schauts aus, dass kommt als fehlermeldung zurück:
root:/home/u/user08/public_html/test # ./shell4.sh
: bad interpreter: No such file or directory
-
Kann es sein, das die Bash auf dieser Maschine gar nicht drauf ist?
mach mal:
Code:
ll /bin/bash
und
whereis bash
-
bei Befehl1:
-rwxr-xr-x 1 root root 485212 Mar 19 2005 /bin/bash
bei Befehl2:
bash: /bin/bash /etc/bash.bashrc /usr/share/man/man1/bash.1.gz
Woran kann ich dass nun sehen obs drauf ist oder nicht? und ggfs aktualisieren?
-
passt schon.
Was bringt folgendes:
Code:
ll /home/u/user08/public_html/test/shell4.sh
Sind die Rechte richtig?
Was passiert bei:
Code:
root:/home/u/user08/public_html/test # sh shell4.sh
-
beim ersten passiert folgendes
Code:
-rwxrwxrwx 1 user828c www 78 Mar 1 23:36 /home/u/user08/public_html/test/shell4.sh
beim zweiten passiert folgendes:
Code:
sh shell4.sh
: command not found
/home/u/user08/public_html/test/datei_06.03.01.zip
-
Also findet das Skript etwas - siehe Zeile 3.
Allerdings verstehe ich die 2.Zeile überhaupt nicht.
Welcher Befehl soll hier nicht gefunden werden?
-
verstehe ich eben auch nicht, es steht ja nur folgendes in der bash datei:
Code:
#!/bin/bash
find /home/u/user08/public_html/test -name "datei_06.03.01.zip"
-
Und die Datei ist vorhanden.
Also macht folgendes eine korrekte Ausgabe:
Code:
ll /home/u/user08/public_html/test datei_06.03.01.zip
Ich versteh's nicht?
Warum sollte ein Befehl normal funktionieren und innerhalb eines Skripts gibt's einen Fehler?
Hast Du zu dem Verzeichnis die richtigen Zugriffsrechte?
-
ja ich führe alles unter root aus, also daran kann es nicht liegen...
hm ich nämlich auch nicht, sehr komisch, ich geh jetzt nochmal die ganze konfiguration durch
-
Hast Du vielleicht etwas anderes als Bash eingestellt?
Was ich mir allerdings nicht vorstellen kann, weil die erste Zeile explizit darauf hinweist.
Entfern sie trotzdem mal. Dann hast Du also nur noch eine Zeile mit dem find-Befehl, der ja außerhalb des Skripts funktioniert.
Starte dann mit einem der folgenden:
Code:
sh skript
zsh skript
bash skript
csh skript
Hast Du denn überhaupt Linux, was ich hier mal so vermute, und welche Version?
-
Ja klar habe ich Linux, Suse 9.3
hm nein tut sich überhaupt gar nichts...
-
Neuer Versuch:
Jetzt mit ls statt mit find.
Versuch es erst mal so:
Code:
#!/bin/bash
I=0
DATUM=`date --date "-$I day" '+%y.%m.%d'`
echo $DATUM
for FILE in `ls /home/u/user08/public_html/otr/datei_${DATUM}_*.zip`
do
DATEI=$FILE
echo $DATEI
done
Und wenn's klappt, so:
Code:
#!/bin/bash
I=0
# Die 3 steht fuer hole alles der letzten 3 Tage, was ich noch nicht habe.
while [ $I -lt 3 ]
do
DATUM=`date --date "-$I day" '+%y.%m.%d'`
for FILE in `ls /home/u/user08/public_html/otr/datei_${DATUM}_*.zip`
do
DATEI=$FILE
echo $DATEI # zur Kontrolle
ncftpput -u user -p passwort ftphost /html/files ${DATEI}
done
I=`expr $I + 1`
done