NSTask con il problema script bash
-
01-10-2019 - |
Domanda
Per esempio, ho questo script bash semplice:
#!/bin/sh
cd $1;
E questo cacao wrapper per esso:
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];
Questo è non funziona correttamente. E il problema è lo spazio nel nome della cartella in TestFolder.
Sto cercando di impostare testFolder
in questo modo:
NSString *testFolder = [NSString stringWithString:@"/Users/test/Desktop/test\\ 1"]
Ma questo è anche lo stesso errore in uscita:
cd.sh: line 9: cd: /Users/test/Desktop/test: No such file or directory
I percorsi senza spazi (ad esempio: @"/Users/test/Desktop/test1"
) funziona pure.
Soluzione
Questo non è davvero un problema circa NSTask
. Aprite il vostro (bash
ed eseguire se si utilizza tcsh
) terminale e fare
$ mkdir foo\ bar
$ FUBAR=foo\ bar
$ cd $FUBAR
Questo non funziona. Hai bisogno di fare
$ cd "$FUBAR"
, invece. Questo è a causa della regola espansione del sh
. Leggere il manuale di bash per esempio qui , la sezione chiamato ESPANSIONE . In questa sezione dalla shell scripting aiuto di primer forza, anche.