Systemvariabeln aus string filtern

ruNN0r

Erfahrenes Mitglied
Hallo, ich habe die Aufgabe einen Kommandozeilen Interpreter zu schreiben. Dieser soll Dateiumlenkung können, Systemvariabeln interpretieren können usw. Bisher hat alles gut geklappt. Jedoch die Systemvariabeln machen mit Probleme!
Das alles läuft unter Linux!

nehmen wir an, er soll folgendes Interpretieren:
ls -l /$HOME/Arbeitsfläche/hallo/ > abc.txt

Dann soll das Programm den Inhalt des Ordners hallo auf dem Desktop in die Datei abc.txt schreiben.
Um alles gut ausführen zu können habe ich den String zunächst gesplittet und in einen Array gelegt. Kriterium ist der Leerschritt...
Ich frage mich nun, ob es eine einfache Möglichkeit Systemvariabeln durch den Variabelwert zu ersetzen!?
es müsste am ende das dort stehen:
ls -l /home/runn0r/Arbeitsfläche/hallo/ > abc.txt

Mein aktuelle Idee ist, ich suche den String schritt für schritt ab, suche nach dem $ und schaue, bis wohin die Variable geht. Danach ersetze ich diese. Das ist jedoch sehr umständlich und man muss alles hin und her schieben. Ich dachte, es gibt vielleicht eine Bibilothek die sowas bereits hat.

Ich danke für eure Hilfe!
 
Nimm den path und mache ein Systemaufruf mit "echo path"
das lenkst du einfach in eine datei um und liesst es aus oder über pipe direkt in dein programm ;)

gibt bestimmt ne elegantere lösung aber so dürfte es funktionieren
 
Hallo ruNN0r

Das ist ein klassischer Fall der nach Regex schreit. Damit kannst du solche Sachen sehr einfach maskieren. Für C++ hast du boost::regex und für C gibt es auch schon fertige Libraries

Grüsse
Cromon
 
ok, regex hört sich nach einer guten Idee an. Ja, ist kein C++ sondern C.
Also da werde ich mich mal genauer umsehen... Da ich bisher nicht weiter gekommen bin habe ich mir 2 Methoden geschrieben... eine replace_string und eine die einfach nach einer Variable sucht. funktioniert auch so halbwegs... ist jedoch mehr als umständlich und macht den Quellcode sehr unübersichtlich. Ich bezweifle dass mein Prof. das so abnimmt ^^
 
Zurück