
Detlev Jaeger wrote:
Hallo zusammen,
wahrwscheinlich sehe ich den Wald vor lauter Bäumen nicht, aber ich komme mit fogendem nicht weiter:
Ich möchte testen, ob in einem Verzeichnis Dateien vorhanden sind, und wenn ja, dann soll ein Programm gestartet werden.
test -e /var/test* && /usr/bin/...
Das funktioniert, solange nur EINE Datei im Verzeichnis liegt. Bei zwei Dateien wird über einen fehlenden Operator genörgelt, bei 3 und mehr Dateien gibt test ein 'too many arguments' zurück. Es scheint, als würde test alle Dateien auf die Commandline schreiben.
Hi, wenn ich Dir sage schau mal in den Schrank,ob die rosa Tasse da ist und Du findest im Schrank 20 rosa Tassen, wirst Du mich fragen welche rosa Tasse ich meine :-)) test ist da kompromissloser, es schmeisst Dir die Tassen vor die Füsse. Im Ernst. test -e prueft ob _eine_ Datei da ist, mit /var/test* koennen beliebig viele da sein. Nicht Test schreibt alles in die Commandline, sondern das Sternchen. ( Siehe ls * ) Gib also einen signifikanten Namen an, oder formuliere das script anders, z.B: if [ `find /var -empty` = /var ] ; then echo "Das Verzeichnis ist leer" else echo "Das Verzeichnis ist voll" fi oder [ `find /var -empty` = /var ] || /usr/bin/... (Dieses Konstrukt schaut zwar flott aus, macht aber scripte unleserlich. Ich verwende das nur in Einzeilern) Nebenbei bemerkt: Das Verzeichnis /var solltest Du von solchen Dateien freihalten. Ich weiss ja nicht was Du vorhast, aber wenn Du die Dateien per script erstellst, kannst Du ja vorher ein Verzeichnis erstellen und dann einfach testen ob es da ist: #!/bin/bash ...rm -fr Verzeichnis ... ...do anything ... ...mkdir /tmp/testdir ...create /tmp/testdir/Files ... ...test -d /tmp/testdir ... ... exit
Was ist der richtige Weg ?
Rätselnd.... Detlev
Vielleicht hilfts ? ;-) o long... bernd -- Please try to boot your system outside the system, it maybe the grounding problem. -- Um aus der Liste ausgetragen zu werden, eine Mail an majordomo@suse.com schicken, mit dem Text: unsubscribe suse-linux