• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Was gibt es Schöneres als den Mai draußen in der Natur mit allen Sinnen zu genießen? Lasst uns teilhaben an Euren Erlebnissen und macht mit beim Thema des Monats Da blüht uns was! ---> Klick

Shell Script in Cocoa und Ergebins abfangen

below

Purpurroter Cousinot
Registriert
08.10.06
Beiträge
2.858
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
 

below

Purpurroter Cousinot
Registriert
08.10.06
Beiträge
2.858
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
 

jack.jack

Klarapfel
Registriert
20.03.09
Beiträge
280
Gibt es eigentlich schon eine in Cocoa programmierte Funktion, die das gleiche wie /usr/bin/grep macht?
 

jack.jack

Klarapfel
Registriert
20.03.09
Beiträge
280
Es geht nicht. Ich habe es jetzt folgendes versucht

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

Und dann grepString2 als Argument für /bin/sh gegeben. Doch der Task gibt nichts zurück. Woran könnte das liegen?
 

below

Purpurroter Cousinot
Registriert
08.10.06
Beiträge
2.858
Ich glaube, es gibt Leute, die ein Cocoa RegEx Framework geschrieben haben.

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

Alex
 

jack.jack

Klarapfel
Registriert
20.03.09
Beiträge
280
Für Fortgeschrittene: Meinst du mit [task setStandardInput: pipe] also muss ich dort eine Pipe einsetzen?