- Mitglied seit
- 08.03.2004
- Beiträge
- 1.574
- Reaktionen
- 0
hi
mein Problem heute ist folgendes. Ich habe eine Variable "elements" und in dieser Variablen soll die Anzahl aller Dateien gespeichert werden die so aussehen: "*-test.tar.gz", wobei im *-Bereich immer das aktuelle Datum steht.
ich dachte, dass müsste mit folgendem Befehl funktionieren:
ls *-test.tar.gz => holt mir alle Dateien die ich suche
wc -l => zählt die Anzahl der Einträge aus ls
tr -d " " => löscht alle vorlaufenden Leerzeichen aus wc
So, das funktioniert auch wunderbar. Aber das Ergebnis von tr landet jetzt nicht in elements sondern wird direkt auf die Konsole rausgeworfen. Dann funktioniert natürlich der Rest vom shellscript nicht mehr...
und wie fange ich solche Fehler im folgenden Code eigentlich ab?
ich hab so einen Test eingebaut:
der soll im Prinzip nur gucken ob in elements überhaupt was drin steht. eigentlich sollte dieser Test NICHT 0 liefern (ergo FALSE) und dann den Teil im else Zweig ausführen.
a) wie kann ich so einen test umdrehen?
ich sag das mal in PHP:
b) wieso funktioniert das jetzt nicht?
c) wie wäre es denn richtig?
mein Problem heute ist folgendes. Ich habe eine Variable "elements" und in dieser Variablen soll die Anzahl aller Dateien gespeichert werden die so aussehen: "*-test.tar.gz", wobei im *-Bereich immer das aktuelle Datum steht.
ich dachte, dass müsste mit folgendem Befehl funktionieren:
Code:
elements=ls *-test.tar.gz | wc -l | tr -d " "
ls *-test.tar.gz => holt mir alle Dateien die ich suche
wc -l => zählt die Anzahl der Einträge aus ls
tr -d " " => löscht alle vorlaufenden Leerzeichen aus wc
So, das funktioniert auch wunderbar. Aber das Ergebnis von tr landet jetzt nicht in elements sondern wird direkt auf die Konsole rausgeworfen. Dann funktioniert natürlich der Rest vom shellscript nicht mehr...
und wie fange ich solche Fehler im folgenden Code eigentlich ab?
ich hab so einen Test eingebaut:
Code:
if test $elements; then
# nichts
else
echo "keine Dateien gefunden"
exit 1
fi
der soll im Prinzip nur gucken ob in elements überhaupt was drin steht. eigentlich sollte dieser Test NICHT 0 liefern (ergo FALSE) und dann den Teil im else Zweig ausführen.
a) wie kann ich so einen test umdrehen?
ich sag das mal in PHP:
PHP:
#nicht so:
if($elements){}else{
echo "keine Dateien gefunden";
return;
}
#sondern so:
if(!$elements){
echo "keine Dateien gefunden";
return;
}
c) wie wäre es denn richtig?

