Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c NSTask与bash脚本问题_Objective C_Cocoa_Bash_Shell_Nstask - Fatal编程技术网

Objective c NSTask与bash脚本问题

Objective c NSTask与bash脚本问题,objective-c,cocoa,bash,shell,nstask,Objective C,Cocoa,Bash,Shell,Nstask,例如,我有一个简单的bash脚本: #!/bin/sh cd $1; 还有这个可可包装纸: NSTask *cd = [[NSTask alloc] init]; NSString *testFolder = [NSString stringWithString:@"/Users/test/Desktop/test 1"]; [cd setLaunchPath:@"/bin/sh"]; [cd setArguments:[NSArray arrayWithObjects:[[NSBund

例如,我有一个简单的bash脚本:

#!/bin/sh
cd $1;
还有这个可可包装纸:

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];
这是不正确的。问题是testFolder中的文件夹名中有空格。 我试图设置
testFolder
如下:

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

但这也是同样的错误:

cd.sh:第9行:cd:/Users/test/Desktop/test:没有这样的文件或目录


没有空格的路径(例如:
@”/Users/test/Desktop/test1“
)也可以工作

对于
NSTask
,这并不是一个真正的问题。打开终端(如果使用
tcsh
,请运行
bash
),然后执行以下操作

这不管用。你需要做什么

$ cd "$FUBAR"

相反。这是因为
sh
的展开规则。阅读bash手册,例如,名为扩展的部分。从shell脚本初级读本中可能也会有所帮助。

我一直在寻找为什么会出现“无法访问启动路径”的问题,而您的代码让我意识到我需要[cd setLaunchPath:@”/bin/sh];这不是你的问题,但还是很有帮助的
$ cd "$FUBAR"