Hinweis: Das Forum wird geschlossen! Neue Registrierungen sind nicht mehr möglich!

 Zurück zu Pro-Linux   Foren-Übersicht   FAQ     Suchen    Mitgliederliste
Wo ist der Fehler im Skript?

 
Neuen Beitrag schreiben   Auf Beitrag antworten    Pro-Linux Foren-Übersicht -> Programmieren - Allgemein
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
...___...___...
Gast





BeitragVerfasst am: 24. Apr 2003 11:47   Titel: Wo ist der Fehler im Skript?

Warum funzt das nicht?
code:

#!/bin/sh
#
DATUM=`date +%d-%m-%Y`
VERZEICHNIS1=mnt/camera/cam-1/
#VERZEICHNIS2=mnt/camera/cam-2/
#VERZEICHNIS3=mnt/camera/cam-3/
ARCHIV1=$VERZEICHNIS1/archiv/
#ARCHIV2=$VERZEICHNIS2/archiv/
#ARCHIV3=$VERZEICHNIS3/archiv/
#
cd /
#
mount -t smbfs -o username=xxx,password=yyy //10.104.10.202/camera$ /mnt/camera
#
find $VERZEICHNIS1 -ctime -1 -print -exec tar cvfs $ARCHIV1/images_$DATUM.tar {} \ ;
#
#tar cvzf $DATUM.tar.gz
#
umount /mnt/camera
#
exit 0


Fehlermeldung:
fserver1:/batch # ./compress_cams.sh
INFO: Debug class all level = 3 (pid 21123 from pid 21123)
opts: rw
opts: username=xxx
opts: password=yyy
mount.smbfs started (version 2.2.5)
added interface ip=10.104.10.210 bcast=10.104.10.255 nmask=255.255.255.0
Connecting to 10.104.10.202 at port 139
21123: session request to 10.104.10.202 failed (Called name not present)
Connecting to 10.104.10.202 at port 139
21123: session request to 10 failed (Called name not present)
Connecting to 10.104.10.202 at port 139
find: missing argument to `-exec'

Wie muß der Aufruf denn aussehen?
 

hjb
Pro-Linux


Anmeldungsdatum: 15.08.1999
Beiträge: 3236
Wohnort: Bruchsal

BeitragVerfasst am: 24. Apr 2003 12:03   Titel: Re: Wo ist der Fehler im Skript?

Hi,

du hast ein Leerzeichen zwischen \ und ;
Das muß weg.

Gruß,
hjb
_________________
Pro-Linux - warum durch Fenster steigen, wenn es eine Tür gibt?
 
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger

...___...___...
Gast





BeitragVerfasst am: 24. Apr 2003 12:32   Titel: Re: Wo ist der Fehler im Skript?

Danke!
Nun läuft es.
man find sagt u. a.:
das Semikolon kann nicht weggelassen werden, und es muß durch mindestens ein Whitespace von der letzen Option getrennt werden;
Darum halt der Leerschritt.

Man lernt ja nicht aus ...
 

...___...___...
Gast





BeitragVerfasst am: 24. Apr 2003 12:42   Titel: Re: Wo ist der Fehler im Skript?

Kann da eigentlich dann noch etwas angefügt werden?
Etwa in der Art:
code:
find $VERZEICHNIS1 -ctime -1 -print -exec tar cvfs $ARCHIV1/images_$DATUM.tar {} -exec rm {} ;


Danke.
 

...___...___...
Gast





BeitragVerfasst am: 24. Apr 2003 13:00   Titel: Re: Wo ist der Fehler im Skript?

Sollte:
code:
find $VERZEICHNIS1 -ctime -1 -print -exec tar cvfs $ARCHIV1/images_$DATUM.tar {} -exec rm {} ;

heißen.
 

...___...___...
Gast





BeitragVerfasst am: 24. Apr 2003 13:12   Titel: Re: Wo ist der Fehler im Skript?

Sollte:
code:
find $VERZEICHNIS1 -ctime -1 -print -exec tar cvfs $ARCHIV1/images_$DATUM.tar {} -exec rm {} ;

heißen.
 

...___...___...
Gast





BeitragVerfasst am: 24. Apr 2003 13:13   Titel: Re: Wo ist der Fehler im Skript?

Warum verschluckt er denn nun den Backslash am Ende der Zeile?
 

Jochen
Gast





BeitragVerfasst am: 24. Apr 2003 14:39   Titel: Re: Wo ist der Fehler im Skript?

Alles eine Sache des Quotings. Den Backslash verschluckt das Board, da es ihn selbst interpretiert. Das wird benötigt, wenn man z.B. [code]...[/code] schreiben will, ohne dass es
code:
dann so aussieht.


Und das gleiche Problem gilt für find und die Shell. Das Semikolon würde das find-Kommando für die Shell beenden. Wenn man aber noch weitere -execs an den find bauen will, muss find ja auch irgendwie das Ende des ersten -exec-Arguments erkennen. Daher muss man mittels ";" als letztes einzelnes Zeichen anzeigen, dass das Komamndo zu -exec zu Ende ist. Damit die Shell nun hier nicht das ganze find-Kommando beendet, muss man es entwerten, also einen Backslash davorsetzen. Mehrere -execs zu einem find macht ma also so:
find . -name datei -exec echo "Habe datei" \; -exec echo "gefunden" \;
Bei der Eingabe für's Board muss man dann natürlich \\; statt \; tippen, sonst erhält man nur ;.

Jochen
 

...___...___...
Gast





BeitragVerfasst am: 24. Apr 2003 14:56   Titel: Re: Wo ist der Fehler im Skript?

Ah .... !!!

Danke schön!
 

...___...___...
Gast





BeitragVerfasst am: 24. Apr 2003 14:58   Titel: Re: Wo ist der Fehler im Skript?

Also muß es dann so aussehen:
code:

find $VERZEICHNIS1 -ctime -1 -print -exec tar cvfs $ARCHIV1/images_$DATUM.tar {}; -exec rm {} \;



Korrekt?
 

Jochen
Gast





BeitragVerfasst am: 25. Apr 2003 7:53   Titel: Re: Wo ist der Fehler im Skript?

Öhm - nö?

Von der Syntax her sollte es so aussehen:
find $VERZEICHNIS1 -ctime -1 -print -exec tar cvfs $ARCHIV1/images_$DATUM.tar {} \; -exec rm {} \;
Nur habe ich das dumpfe Gefühl, dass dieses Kommando nicht macht, was Du willst... Die Archiv-Datei wird wegen der Option -c (create) für jede neu gefundene Datei neu angelegt und der alte Inhalt damit überschrieben. Verwende statt dessen lieber die Option "-r" bzw. "--append":
code:
find $VERZEICHNIS1 -ctime -1 -print -exec tar rvfs $ARCHIV1/images_$DATUM.tar {} \; -exec rm {} \;

Tipp am Rande: Solange Du solche Skripte testet, setze vor alle gefährlichen Kommandos wie rm ein echo. So kannst Du sehen, was das Skript gerne tun würde, ohne dass die Dateien direkt verschwinden...

Jochen
 

Beiträge vom vorherigen Thema anzeigen:   
     Pro-Linux Foren-Übersicht -> Programmieren - Allgemein Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehen Sie zu:  

Powered by phpBB © phpBB Group
pro_linux Theme © 2004 by Mandaxy