Archiv verlassen und diese Seite im Standarddesign anzeigen : Shell Script "Leere Datei"
Hallo,
kann mir jemand sagen warum dieses Shell Script nicht funktioniert?
#Das ist ein Shell Skript, welches Dateien nach einem bestimmten Muster durchsucht!
#./test.sh Datei Suchbegriff
grep -l $2 $1>erg
# Danach soll es ausgeben ob die Datei OK war oder nicht!
if [ [-e]=erg ]
then (cat erg)
else (echo"FEHLER!");
fi
rm erg
Gruss Michael
kann mir jemand sagen warum dieses Shell Script nicht funktioniert?Was GENAU funktioniert denn nicht? Ich wuerde das zB. als Einzeiler schreiben, etwa so:
grep $2 $1 && echo OK || echo not foundAnsonsten musst Du den Errorlevel von grep abfragen und nicht, ob es ein File erzeugt hat. Das macht er naemlich immer;-)
Gruss Pit.
stefan-tiger
26.04.05, 15:13
Erstmal würde ich dir raten Scripte&Programme nicht "test" zu nennen, denn es gibt schon ein Programm daß so heisst:
bash-2.05b$ whereis test
test: /usr/bin/test /usr/X11R6/bin/test /usr/bin/X11/test
/usr/man/man1/test.1.gz /usr/man/man1p/test.1p.gz
/usr/share/man/man1/test.1.gz /usr/share/man/man1p/test.1p.gz
Deswegen hatt bei mir auch schonmal ein "test"-cronjob net funktioniert ;)
Hi,
wo hast Du denn die ganzen Klammerungen her?
Da steckten eine Menge syntaktische und logische Fehler drin (z.B. bei [-e ]).
Die runden Klammern haben in der Shell eine eigene Bedeutung (subshell), und
werden nicht, wie in manchen Programmiersprachen, z.B. zum Regeln der
Auswertungspriorität benutzt (ich vermute mal, dies sei die Ursache;)).
Lies die manpage von bash für die Syntax des eingebauten test-Operators
(eckige Klammer).
Um zu testen, ob eine Datei existiert und nicht leer
ist gibt es -n:
if [ -n erg ]; then
cat erg
else
echo"FEHLER!"
fi
[ -f erg ] && rm erg
ist übersichtlicher, wenn auch nicht so "schön" wie pibi's Einzeiler:)
Gruss,
Wolfgang
statt if [ -n erg ] würde ich [ -s erg ] nehmen. das ist nur wahr wenn die datei existiert und nicht leer ist!
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.