"bash"-Problem mit "echo"-Ausgabe

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
cateye
Beiträge: 9
Registriert: 30.12.2005 01:37:01
Wohnort: Magdeburg
Kontaktdaten:

"bash"-Problem mit "echo"-Ausgabe

Beitrag von cateye » 01.07.2006 22:53:49

Hi,

ich hab folgendes kleines Übungsskript geschrieben:

Code: Alles auswählen

#./bin/bash

tmpfile="/tmp/erg"
ls $1 > $tmpfile
ls $2 >> $tmpfile
echo "Die Verzeichnisse $1 und $2 enthalten `wc -l $tmpfile` Dateien!"
rm $tmpfile

exit 0
Das Skript soll also nur die Zeilen der Ausgabe von "ls" und somit die Anzahl der Dateien in den Verzeichnissen zählen. Beim Ausführen übergebe ich dafür als Parameter z.B. die Verzeichnisse /usr/bin und /usr/local

Code: Alles auswählen

./meinscript /usr/bin /usr/local
Als Ausgabe kommt dann aber:

Code: Alles auswählen

Die Verzeichnisse /usr/bin und /usr/local enthalten 1435 /tmp/erg
Dateien!
Das '/tmp/erg' aus der Variablen 'tmpfile' wird also noch mitgeliefert, obwohl 'echo' nur das Ergebnis von `wc -l $tmpfile` und nicht $tmpfile direkt übergeben wird.

Wo kann hier der Fehler liegen?

CU

Cateye
AMD64-X2-4800+, Abit Fatal1ty AN8 SLI, 2x512MB Kingston HyperX 2-2-2-5-1T (KHX3200ULK2/1G), Geforce7600GT PCIe, Monitor: BenQ FP91V, Samsung P120 SP2504C (SATAII), LG GSA-4167B, Enermax ELT400AWT, Debian 3.1 mit allen Updates, Kernel 2.6.8-3-686-smp

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 01.07.2006 23:19:09

das zusätzliche "/tmp/erg" wird von "wc" ausgegeben :wink:

Code: Alles auswählen

gms@gms1:~$ ls /usr/bin /usr/local >/tmp/erg
gms@gms1:~$ wc -l /tmp/erg
1924 /tmp/erg
Gruß
gms

cateye
Beiträge: 9
Registriert: 30.12.2005 01:37:01
Wohnort: Magdeburg
Kontaktdaten:

Beitrag von cateye » 01.07.2006 23:28:33

Ups,

hätte ich wohl auch mal ausprobieren sollen. Sinnvoll wäre wohl auch gewesen, in dem Buch einfach mal weiter zu lesen :oops: Da steht, dass man das "Problem" mit dem Hinzufügen eines "<" für die eindeutige Umlenkung des Standardeingabe-Kanals auf die entsprechende Datei beheben kann. :roll:

Code: Alles auswählen

 echo "Die Verzeichnisse $1 und $2 enthalten `wc -l < $tmpfile` Dateien!"
Trotzdem Danke :wink:

CU

Cateye
AMD64-X2-4800+, Abit Fatal1ty AN8 SLI, 2x512MB Kingston HyperX 2-2-2-5-1T (KHX3200ULK2/1G), Geforce7600GT PCIe, Monitor: BenQ FP91V, Samsung P120 SP2504C (SATAII), LG GSA-4167B, Enermax ELT400AWT, Debian 3.1 mit allen Updates, Kernel 2.6.8-3-686-smp

Antworten