• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[gelöst] * wird nicht als Platzhalter akzeptiert

Hallo Zusammen,
nach dem ich mein Linux-System neu aufsetzen musste, hab ich nun ein Problem bei einem meiner Shell-Skripte.
Und zwar akzeptiert er nur bei Ausführung des Skriptes den * als Platzhalter nicht. Wenn ich das ganze normal in die Konsole eingebe, funktioniert es.

Hier mal ein Beispiel Code
Code:
#!/bin/bash
TESTV="cms2man_*.txt"
date
if [ -f $TESTV ]; then
echo $TESTV vorhanden
fi;

Ich bekomme immer die Fehlermeldung:
Code:
./testf: line 5: [: cms2man_t1.txt: binary operator expected

Hat hier jemand ne Ahnung warum das nicht mehr funktioniert? Denn vorher hat das einwandfrei funktioniert.

SuSE ist die gleiche wie zuvor auch (9.0, Kernel 2.4.21-291)

MfG

Olli
 
A

Anonymous

Gast
Olli schrieb:
Ich bekomme immer die Fehlermeldung:
Code:
./testf: line 5: [: cms2man_t1.txt: binary operator expected
So wie du das Script geschrieben hast, sollte es so lange funktionieren wie durch den Platzhalter immer nur eine Datei gefunden wird, werden 2 Dateien gefunden dann erhältst du die Meldung oben und bei noch mehr gefundenen Dateien erhältst du eine Meldung "zu viele Argumente"

robi
 
Das ist ganz einfach ungültige Syntax und kann auch vorher nicht funktioniert haben. Schreib das Skript anders, z.B. mit einer Schleife.

Vorschlag:
Code:
#!/bin/sh
for TESTV in cms2man_*.txt ; do
    if [ -f $TESTV ] ; then
        echo $TESTV vorhanden
    fi
done
 
OP
Olli
Hi Traffic,

genauso haben wir das jetzt gemacht - DANKE!!!!

Geht einwandfrei!

MfG

Olli


traffic schrieb:
Das ist ganz einfach ungültige Syntax und kann auch vorher nicht funktioniert haben. Schreib das Skript anders, z.B. mit einer Schleife.

Vorschlag:
Code:
#!/bin/sh
for TESTV in cms2man_*.txt ; do
    if [ -f $TESTV ] ; then
        echo $TESTV vorhanden
    fi
done
 
Oben