gpt4 book ai didi

objective-c - NSTask 与 bash 脚本问题

转载 作者:行者123 更新时间:2023-12-03 17:07:36 28 4
gpt4 key购买 nike

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

#!/bin/sh
cd $1;

还有这个 cocoa wrapper :

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),然后执行

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

这行不通。你需要做

$ cd "$FUBAR"

相反。这是因为sh的扩展规则。阅读 bash 的手册,例如here ,名为EXPANSION的部分。 This section shell 脚本入门也可能有所帮助。

关于objective-c - NSTask 与 bash 脚本问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3663716/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com