NSTask mit Bash-Skript Problem
-
01-10-2019 - |
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.
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.