我正在制作一个基本的Mac应用程序,这将使运行一堆bash命令变得容易。 (输入代码,检查正常运行时间等。) 这些是我用bash脚本编写的,并且手动调用,它们效果很好。 我想让我的团队更轻松。
我在Swift中做了一个按钮,调用了IB动作。
然后我对该脚本运行Process()。 然后,我想将对呼叫的响应写到Scrollable文本视图中。
脚本全部位于应用程序代码的文件夹中。说:
~/dev/ourapp/scripts/script1.sh
~/dev/ourapp/scripts/script2.sh
// etc...
然后从cmd行调用它们,它们运行良好。
我的代码是:
func run(_ command: String) -> String? {
let pipe = Pipe()
// let path = Bundle.main.url(forResource: command, withExtension: "sh")
let filePath = Bundle.main.path(forResource: command, ofType: "sh")
if(filePath == nil) {
return String(format:"Unknown Command: %@", command)
} else {
let process = Process()
process.launchPath = String(format:"/bin/bash %@", filePath!)
process.standardOutput = pipe
let fileHandle = pipe.fileHandleForReading
process.launch()
return String(data: fileHandle.readDataToEndOfFile(), encoding: .utf8)
}
}
然后我在“操作”中通过以下方式调用它:
@IBAction func CallScript1(_ sender: NSButton) {
// let response = run("~/dev/ourapp/scripts/script1")
let response = run("script1")
server_log.documentView!.insertText(response)
}
我得到的错误:
无法访问启动路径
谢谢