【发布时间】:2020-01-22 21:28:50
【问题描述】:
我希望使用以下命令在 scala 中执行 shell cmds
def executeShellCommand(cmd: String): Unit = {
if (cmd.! != 0) {
throw new RuntimeException(s"Error executing command '$cmd'")
}
}
我收到一个类似下面的 cmd,它在 s3 路径中包含一个空格(From Sender)
"aws s3 cp s3://external-bucket/From Sender/my-file.txt s3://my-bucket/my-file.txt"
很遗憾,运行这个 cmd 时出现错误。
我相信如果我可以将其转换为序列,cmd 将正常工作
Seq("aws", "s3", "cp", "s3://external-bucket/From Sender/my-file.txt", "s3://my-bucket/dataset/my-file.txt").!
cmd 字符串来自外部来源,因此我无法轻松将其转换为序列。我尝试将 s3 存储桶路径用引号括起来,但这也不起作用。
有什么想法可以在 scala 中运行这个 cmd 吗?
【问题讨论】:
-
您确定修复命令是您的工作吗?在我看来,为您提供命令的服务应该确保它们是有效的。
-
您能否修改 cmd 字符串,例如通过引用文件?能做到的话,转成序列应该很容易
-
这是一个很好的观点,cmd 的供应商正在发送一个不正确的。不过,如果框架能够处理转义引号中的 s3 路径的情况,那就太好了