如果我尝试编译,由于"\;"
我收到“文字无效的转义序列”错误但是如果我尝试使用"\\;"
或"\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
}
答案 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>