当前位置: 首页 > 面试题库 >

如何在Swift脚本中运行终端命令?(例如xcodebuild)

赵朝
2023-03-14
问题内容

我想用swift替换我的CI bash脚本。我不知道如何调用普通的终端命令,例如lsxcodebuild

#!/usr/bin/env xcrun swift

import Foundation // Works
println("Test") // Works
ls // Fails
xcodebuild -workspace myApp.xcworkspace // Fails
$ ./script.swift
./script.swift:5:1: error: use of unresolved identifier 'ls'
ls // Fails
^
... etc ....

问题答案:

如果您不使用Swift代码中的命令输出,则只需执行以下操作:

#!/usr/bin/env swift

import Foundation

@discardableResult
func shell(_ args: String...) -> Int32 {
    let task = Process()
    task.launchPath = "/usr/bin/env"
    task.arguments = args
    task.launch()
    task.waitUntilExit()
    return task.terminationStatus
}

shell("ls")
shell("xcodebuild", "-workspace", "myApp.xcworkspace")

更新:对于Swift3 / Xcode8



 类似资料:
  • 请先参考这个问题, 无法读取opensslv. h:没有这样的文件或目录 基于此,我需要使用AppleScript运行以下三行终端命令, 我尝试了两种方法,我创建了带有.命令和. sh扩展名的文本文件,并添加了上述三行。然后尝试从AppleScript运行它, 但我犯了这个错误, 这可能行得通, 但它在第三行的终端上请求密码,并等待用户响应。AppleScript中显示的密码对话框(当以管理员权限

  • 我有一个简单的问题涉及child_proccess。如果从脚本调用child_process,它将在该脚本中运行该命令。如果您导出运行该命令的函数,对于我测试的内容,它会尝试在库终端而不是当前终端中运行该命令。示例:假设您有导出到 b 的脚本 a.js.js在 a 中您有一个名为 hello 的函数,它使用 echo 命令打印“ World”: 当你运行它时,它不会给你发送任何东西。如果用cons

  • 问题内容: 我有一个具有某些功能的脚本。 我可以直接从命令行运行功能之一吗? 像这样吗 问题答案: 如果脚本仅定义函数,而不执行其他任何操作,则可以先使用or 命令在当前shell的上下文中执行脚本,然后简单地调用函数。请参阅以获取更多信息。

  • 问题内容: 我是python的新手,已经学习了几周。但是,现在我刚刚更改了操作系统,现在正在使用ubuntu,并且无法在终端上运行任何脚本。 我确定有, 但是当我去终端输入时,例如 终端显示了这样的错误消息 python:无法打开文件“ test.py”:[Errno 2]没有这样的文件或目录 我该怎么办? 我必须将文件保存在任何特定的文件夹中以使其在终端上运行吗? 问题答案: 这个错误: pyt

  • 问题内容: 我前一段时间读过这篇文章,但似乎找不到。我试图找到一个将在终端中执行命令然后输出结果的命令。 例如:脚本将是: 它将在终端中运行该命令的结果 问题答案: 做这件事有很多种方法: 一种简单的方法是使用os模块: 子流程模块可以实现更复杂的事情:例如:

  • 我最近遵循了一个关于网络抓取的教程,作为该教程的一部分,我必须执行(?)我在命令行中编写的脚本。现在脚本每小时运行一次,我不知道如何阻止它。 我想停止脚本运行。我试图删除代码,但脚本仍然运行。那我该怎么办?