• Das kreative Thema des Monats Oktober wird vor allem diejenigen unter Euch besonders ansprechen, denen Do-it-yourself quasi im Blut liegt. Zeigt uns Eure Improvisationskünste oder fotografiert, was andere Leute sich so im Alltag zusammengestrickt haben. --> Zum Mitmachen bitte hier klicken

Shell Script in Cocoa und Ergebins abfangen

Nein.

| ist ein sog. Pipe Operator. Und es ist insbesondere ein Operator der Shell, also, Dein Shell Programm (bash, sh, zsh) ist dafür zuständig, das auszuführen.

Du musst zuerst einen NSTask für "echo 'Hallo'" machen, und dann einen NSTask mit "sed irgendwas" und dem Ergebnis des ersten Tasks. (In diesem Fall kann man beide Befehle ja auch simpelst mit Cocoa erledigen, ich vermute mal, Du muss etwas komplexeres machen)

Für Anfänger: Du machst es hintereinander, merkst Dir das Ergebnis des Task 1, und steckst das in Task 2.

Für Fortgeschrittene: Direkt die Ausgabe von Task 1 in Task 2 umleiten.

Alex
 
Kannst Du mit meiner Antwort trotzdem etwas anfangen?

Du könntest natürlich, das fällt mir gerade ein, einen Task mit dem programm "/bin/sh" aufmachen, und dann die Argumente

"-c", "echo 'Hallo' | sed \"s/H$//\""

übergeben.

Alex
 
Gibt es eigentlich schon eine in Cocoa programmierte Funktion, die das gleiche wie /usr/bin/grep macht?
 
Es geht nicht. Ich habe es jetzt folgendes versucht

NSString *grepString = [NSString alloc];
grepString = [@"echo '" stringByAppendingString:theReadString];
NSString *grepString2= [NSString alloc];
grepString2 = [grepString stringByAppendingString:@"' | grep '\"t\":'"];

Und dann grepString2 als Argument für /bin/sh gegeben. Doch der Task gibt nichts zurück. Woran könnte das liegen?
 
Ich glaube, es gibt Leute, die ein Cocoa RegEx Framework geschrieben haben.

Selbst verwende ich, Old School!, regex (3)

Alex
 
Für Fortgeschrittene: Meinst du mit [task setStandardInput: pipe] also muss ich dort eine Pipe einsetzen?