XCode构建阶段:在后台运行脚本(不阻塞构建)

10

我希望能够在构建和运行iOS应用程序的模拟器时后台运行脚本(即不阻塞构建过程)。 我尝试过osascript /path/to/script &,还尝试了将执行同样操作的单独shell脚本放到后台,但两者都没有起作用; 构建停止并且我不得不强制退出XCode。

有什么想法吗?


你有什么进展吗?我希望你只需在命令的末尾添加“&”,但看起来似乎不起作用。 - josh-fuggle
很遗憾,我只是在需要时运行后台脚本。 - Joshua Conner
3个回答

9

我曾经也遇到过在构建阶段运行后台脚本的问题,但是以下方法在我的情况下可以正常工作。脚本在我的应用程序运行时在后台运行。显然,除了使用"&"之外,您还必须重定向标准输出。请使用以下格式。(我的脚本位于目录'〜/ Desktop / splint_server /'中)

~/Desktop/splint_server/run.sh > ~/Desktop/splint_server/test 2>&1 &

这将在~/Desktop/splint_server/run.sh运行任意脚本(请将您的脚本路径放在那里)。输出被重定向到名为“test”的日志文件。
更多有关I/O重定向的信息,请访问http://www.tldp.org/LDP/abs/html/io-redirection.html

3
如果您不关心脚本的输出,~/Desktop/splint_server/run.sh > /dev/null 2>&1 & 同样有效。 - Joshua Conner
3
这对于XCode 8.2.1.不再正确,它会等待所有派生的进程终止。您可以通过添加sleep 200&来测试此操作,并查看会发生什么。 - Sebastian Hojas

2

如果您仍然感兴趣。

这是您需要遵循的步骤: 1. 将脚本的.sh扩展名更改为.command 2. 不再调用/path/to/script.sh,而是开始使用“open /path/to/script.command”

就这样。

这将启动一个新的终端窗口并在其中运行您想要的脚本。


这需要一些访问权限。 - abc123

1
你可以在方案设置中使用构建后操作。
"sleep 100&"可以正常工作。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接