在Scala中运行外部unix命令

时间:2017-05-11 08:59:14

标签: scala unix apache-spark

尝试通过scala代码运行一些外部命令。

这是一行

import sys.process._
("hdfs dfs -cat /data/test/zipfiletest/filename")!

这里不是直接指定文件名,而是在scala变量中有这个文件名。 如何将此文件名附加到现有命令。

尝试过类似的事情:

("hdfs dfs -cat /data/test/zipfiletest/")+filename!

但这不起作用。 还有其他办法吗?

3 个答案:

答案 0 :(得分:2)

尝试这样:

import sys.process._
(s"hdfs dfs -cat /data/test/zipfiletest/$filename")!

答案 1 :(得分:2)

您可以使用字符串插值或字符串连接

字符串插值:

import sys.process._
(s"hdfs dfs -cat /data/test/zipfiletest/$filenameVariable")!

字符串连接:

import sys.process._
("hdfs dfs -cat /data/test/zipfiletest/" + filename)!
个人我会去字符串插值,更具可读性

答案 2 :(得分:1)

您可以使用字符串插值,例如

s"hdfs dfs -cat $myVariable"

但请注意文件名是否包含空格!因此,您可能更喜欢使用API​​调用来单独调用每个参数来调用Unix命令(而不是让API分别解析每个参数 - 这将在上面的场景中失败)