swift - 使用 Swift 运行多个终端命令

标签 swift macos terminal fastlane

我想在 macOS 应用程序中一个接一个地执行两个命令。 例如 cd ~/Desktop/MyiOSProject 和 'faSTLane releaseBeta'

我在下面的方法中实现了命令行执行。 当我调用波纹管方法 command("cd ~/Desktop/MyiOSProject && faSTLane releaseBeta") 它抛出错误

env: cd ~/Desktop/MyiOSProject && fastlane releaseBeta: No such file or directory

func command(args: String..., completion: @escaping (Bool,String, Process)->Void) {
        let task = Process()
        task.launchPath = "/usr/bin/env"
        task.arguments = args
        let outPipe = Pipe()
        task.standardOutput = outPipe
        task.launch()
        task.terminationHandler = {process in
            let outdata = outPipe.fileHandleForReading.readDataToEndOfFile()
            if var string = String(data: outdata, encoding: .utf8) {
                string = string.trimmingCharacters(in: .newlines)
                if process.terminationStatus == 0 {
                    completion(true, string, process)
                }else {
                    completion(false, string, process)
                }

                return
            }
            completion(false, "Failed to run command", process)
        }
    }

最佳答案

Process 实例中,您所拥有的环境与终端内的环境不同。 IE。搜索路径不同——尽管您使用的是 /usr/bin/env。我怀疑找不到faSTLane 命令。如果是这样,解决方案很简单:指定它的完整路径,即。 e. /usr/local/bin/faSTLane.

关于swift - 使用 Swift 运行多个终端命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49068732/

相关文章:

iphone - 运行 iPhone Simulator 时可以将 Xcode 控制台的日志输出重定向到终端吗?

macos - 在 OS X 上的 Terminal.app 中打开 BASH shell 时如何设置 PATH 环境变量?

ios - 当新的 View Controller 被激活时,变量数据被删除

swift - Xcode 10 - 实例将被立即释放,因为属性是 'weak'

macos - 为什么 SwiftUI 列表行被选中但未突出显示 (MacOS)

python-3.x - Anaconda 和升级到新的 M1 Mac

swift - 第二次复制文件时,Swift 文件管理器因 EXC_BAD_ACCESS 崩溃

swift - 哪些 Emoji 字符用作 Swift 标识符?

swift - 以编程方式单击 NSButton 时如何关闭 NSViewController

python - 在 Python 中将文本输出到多个终端