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. Was ist der richtige Weg ? Rätselnd.... Detlev -- Um aus der Liste ausgetragen zu werden, eine Mail an majordomo@suse.com schicken, mit dem Text: unsubscribe suse-linux
Hi, On Thu, Nov 19, 1998 at 08:57 +0100, Detlev Jaeger wrote:
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.
Die Shell expandiert das `test*' und liefert alle Dateinamen zurück, auf die das Muster zutrifft. test -e will aber immer nur einen Namen entgegennehmen. Versuch's mal hiermit: for x in /var/test*; do if [ -e "$x" ]; then echo "Mindestens ein(e) Datei/Verzeichnis vorhanden." break else echo "Nix da." fi done Ciao, Stefan -- Um aus der Liste ausgetragen zu werden, eine Mail an majordomo@suse.com schicken, mit dem Text: unsubscribe suse-linux
Detlev Jaeger schrieb:
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/...
Tja, genau dieses Thema war hier letzte Woche in der Liste, ich hatte _exakt_ das gleiche Problem, deshalb sollst Du auch von mir die Loesung bekommen: test -n "`ls ~/Verzeichnis`" || exit 0 ist der Beginn meines Scriptes. Wenn nichts drin steht im gewuenschten Verzeichnis, wird das Script gleich beendet. Fuer Deine Befehlszeile schreibst Du es anders, aber es wird doch sicherlich in einem Script benoetigt? Gruss Peter Blancke. -- Um aus der Liste ausgetragen zu werden, eine Mail an majordomo@suse.com schicken, mit dem Text: unsubscribe suse-linux
Peter Blancke schrieb: Hallo !
test -n "`ls ~/Verzeichnis`" || exit 0
Das funktioniert. Danke !
ist der Beginn meines Scriptes. Wenn nichts drin steht im gewuenschten Verzeichnis, wird das Script gleich beendet. Fuer Deine Befehlszeile schreibst Du es anders, aber es wird doch sicherlich in einem Script benoetigt?
Genau. Tieferer Sinn ist die Steuerung des uucico. Der soll nämlich am frühen Morgen nur aktiv werden, wenn irgendwas im outgoing-spool liegt. Ich hatte mich zwischenzeitlich damit beholfen, dass ich den letzten Dateinamen über die SEQF im uucp-Spool zusammengebastelt habe und nachgeschaut habe, ob diese Datei lokal noch vorhanden ist. Gruß Detlev -- Um aus der Liste ausgetragen zu werden, eine Mail an majordomo@suse.com schicken, mit dem Text: unsubscribe suse-linux
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
Bernd Obermayr schrieb:
[ `find /var -empty` = /var ] || /usr/bin/... (Dieses Konstrukt schaut zwar flott aus, macht aber scripte unleserlich. Ich verwende das nur in Einzeilern)
Genau das Richtige. Das ganze soll Cron vorgeworfen werden...
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:
Ich will der Telekom Geld vorenthalten ;-) Per Cron wird uucico aufgerufen. Abends wird bei meinem Provider auf jeden Fall angerufen. Am Morgen soll der Anruf aber nur stattfinden, wenn ich auf meiner Tastatur irgendetwas verzapft habe, und somit Dateien im entsprechenden Spool-Verzeichnis liegen.
Vielleicht hilfts ? ;-)
Aber immer doch ! Gruß Detlev -- Um aus der Liste ausgetragen zu werden, eine Mail an majordomo@suse.com schicken, mit dem Text: unsubscribe suse-linux
participants (4)
-
blancke@t-online.de
-
dj@odie.ndh.com
-
Illuminatus@t-online.de
-
stefan.troeger@wirtschaft.tu-chemnitz.de