PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Ergebnis eines Befehls als Befehl ausführen



mpw
29-12-2009, 21:42
Hallo,

bin gerade dabei ein bisschen bash zu lernen und verstehe eine Sache nicht.

Habe eine Datei:


mpw@MPWs-Laptop:$ cat test.txt
clear
firefox


Meiner Meinung nach sollte



mpw@MPWs-Laptop:$ 'cat test.txt|grep cle'


den Befehl clear ausführen und das Terminal leeren.

Das passiert aber nicht.

Es kommt einfach wieder der prompt und es wird nichts ausgeführt. Warum nicht?

Kann mir jemand erklären, wie ich quasi den Befehl aus der Datei "schneiden" kann?

(Mir ist schon klar, dass das hier reichlich sinnfrei ist, aber es dient einer komplizierteren Sache mit viel längeren Befehlen)

Danke für Tipps. Habe jetzt schon einiges gegoogelt - nirgends eine Lösung gefunden.

Auch Varianten mit


eval 'cat test.txt|grep fire'
oder
bash -c ....

funktionieren nicht.

Ich versteh's einfach nicht...

Gruß
MPW

klaus_harrer
30-12-2009, 01:13
Hallo



cat test.txt | grep clear


Gibt nur den String clear aus.Dieser string muss noch mittels Interpreter(sh) ausgeführt werden.

d.h



cat test.txt | grep clear | sh


MfG
Klaus Harrer

mpw
30-12-2009, 01:33
Danke.

Das ist ja eine ganz andere Lösung.

Ich war auf dem Wege irgendetwas mit ` ` zu machen. Funktioniert auch, solange keine Leerzeichen dazwischen funken. Wenn man einen Befehl mit Parametern (und somit auch Leerzeichen) hat, fliegt der iwie aus der Kurve und führt nur den Befehl an sich aus(ohne Paramter).

Aber das mit dem sh ist einfach und elegant. Danke!

/edit: Rechtschreibfehler:-(