我的代码如下所示:
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()
非常容易访问它们。
这个错误意味着什么,可能解决这个问题?
答案 0 :(得分:1)
分析您所指的脚本会发现它是一个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 -w