Frage

Zum Beispiel, ich habe diesen einfachen Bash-Skript:

#!/bin/sh
cd $1;

Und dieser Kakao-Wrapper für sie:

NSTask *cd = [[NSTask alloc] init];

NSString *testFolder = [NSString stringWithString:@"/Users/test/Desktop/test 1"];

[cd setLaunchPath:@"/bin/sh"];

[cd setArguments:[NSArray arrayWithObjects:[[NSBundle mainBundle]
                                              pathForResource:@"cd" ofType:@"sh"],testFolder, nil]];
[cd launch];
[cd release];

Dies ist nicht korrekt funktionieren. Und das Problem ist Platz in Ordnernamen in Testfolder. Ich versuche zu Satz testFolder wie folgt aus:

NSString *testFolder = [NSString stringWithString:@"/Users/test/Desktop/test\\ 1"]

Das ist aber auch Ausgang gleiche Fehler:

cd.sh: line 9: cd: /Users/test/Desktop/test: No such file or directory

Pfade ohne Leerzeichen (zum Beispiel: @"/Users/test/Desktop/test1") arbeitet als gut.

War es hilfreich?

Lösung

Das ist nicht wirklich ein Problem, über NSTask. Öffnen Sie Ihr Endgerät (und laufen bash wenn Sie tcsh verwenden), und tun

$ mkdir foo\ bar
$ FUBAR=foo\ bar
$ cd $FUBAR

Das funktioniert nicht. Sie tun müssen,

$ cd "$FUBAR"

statt. Dies ist wegen der Erweiterungsregel des sh. Anleitung lesen bas z.B. hier , der Abschnitt genannt EXPANSION . In diesem Abschnitt von der Shell-Scripting Primer könnte helfen, auch.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top