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.

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top