文字中的Swift无效转义序列

时间:2017-01-08 22:09:27

标签: swift

如果我尝试编译,由于"\;"我收到“文字无效的转义序列”错误但是如果我尝试使用"\\;""\u{005C};" 我收到错误find: -exec: no terminating ";" or "+",就像我没有传递反斜杠字符

@IBAction func button1(_ sender: NSButton) {

    let path = "/usr/bin/find"
    let arguments = ["folder_path","-name","'*.docx'","-print","-exec","zip","'{}'.zip","'{}'","\;"]

    sender.isEnabled = false

    let task = Process.launchedProcess(launchPath :path, arguments: arguments)

    task.waitUntilExit()

    sender.isEnabled = true
}

2 个答案:

答案 0 :(得分:2)

正如罗布所说(正如我在评论中所说的那样),你不是一个壳,所以你不需要任何特殊的引用或反斜杠。

我无法在我的机器上执行zip命令,所以我测试了这样:

let task = Process()
task.launchPath = "/usr/bin/find"
task.arguments = 
    ["/Users/matt/Desktop", "-name", "*.mp3", "-exec", "echo", "{}", ";"]

配置适当的管道后,我运行任务并从管道中读取,果然,我们在桌面上找到了一个 mp3 文件。请注意, no 参数是单引号或反斜杠。

答案 1 :(得分:1)

当你没有将它传递给shell时,你已经添加了一堆shell-escape。例如:

"'*.docx'"

在此上下文中,字面意思是'*.docx',附加'。当你调用shell时会包括它们,否则shell会扩展*。但同样,没有壳。所以没有什么能为你删除它们。 ;的问题相同。您只需; -exec,这是;所必需的。但是在路上没有外壳,所以你不需要反斜杠,因为let arguments = ["folder_path","-name","*.docx","-print","-exec","zip","{}.zip","{}",";"] 没有任何东西会消耗掉。

你的意思是:

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>6.0.5</version> <!-- or whatever version is suitable -->
    <scope>runtime</scope>
</dependency>
相关问题