我有一个代码如下:
let process = Process()
process.launchPath = "/bin/sh"
process.arguments = ["symbolicatecrash", "crash.crash"]
let pipe = Pipe()
process.standardOutput = pipe
process.launch()
let data = pipe.fileHandleForReading.readDataToEndOfFile()
let output: String = String.init(data: data, encoding: .utf8)!但是,我知道这个错误
symbolicatecrash: line 14: use: command not found
symbolicatecrash: line 15: use: command not found
symbolicatecrash: line 16: use: command not found
symbolicatecrash: line 17: syntax error near unexpected token `('
symbolicatecrash: line 17: `use Cwd qw(realpath);'symbolicate脚本和crash.crash都存在于Swift执行当前进程的目录中。因此,Process()可以很好地访问它们。
这个错误意味着什么?对此有什么可能的解决办法?
发布于 2017-09-06 09:04:40
分析您所引用的脚本,可以发现它是一个Perl脚本。但是,您告诉Process运行一个shell脚本(process.launchPath = "/bin/sh"),这就是为什么这不能工作的原因。
它应该可以将launchPath设置为脚本的路径,如下所示:
process.launchPath = "/path/to/symbolicatecrash"
process.arguments = ["crash.crash"]如果脚本可以直接从命令行调用,则无需指定要使用的解释器(在您的示例中是/bin/bash,在我的示例中是/usr/bin/perl )。对于symbolicatecrash,脚本可以直接执行,因为它在脚本的“shebang”行中正确指定了解释器:
#!/usr/bin/perl -whttps://stackoverflow.com/questions/46068822
复制相似问题