我正在尝试编写一个自动化脚本来 pngcrush 我的图像(对于我正在开发的网站),并且我使用 scala 作为脚本语言来编写脚本来执行此操作。一切都很顺利,除了我在执行命令时遇到了关于使用空格的问题。我读到你需要使用
Seq(a,b,c,d)
其中 a,b,c,d 是字符串(用单个空格分隔),用于处理 Scala/Java 如何处理字符串
我用于生成要执行的命令的相关代码在这里。结果变量包含每个文件名的文字路径
for (fileName <- result) {
val string = Seq("pngcrush","brute","-d","\"" + folder.getPath + "/\"","-e",fileName.getName) ++ fileName.getCanonicalPath.replace(" ","\\ ").split(" ").toSeq
然后我用
string!
执行命令。问题是命令最后一部分的文件名(在“-e”标志之后)没有正确执行,因为它无法处理有空格的目录。示例输出如下所示
List(pngcrush, brute, -d, "/tmp/d75f7d89-9ed5-4ff9-9181-41ae2fd82da8/", -e, users_off.png, /Users/mdedetrich/3dot/blublocks/src/main/webapp/img/sidebar/my\, group/users_off.png)
如果我运行 reduceLeft 来取回空格,我显然会得到正确的字符串。
pngcrush brute -d "/tmp/1eaca157-0e14-430c-b0a4-677491d70583/" -e users_off.png /Users/mdedetrich/3dot/blublocks/src/main/webapp/img/sidebar/my\ group/users_off.png
这是正确的命令应该是什么(在终端中手动运行字符串可以正常工作)。但是,当我尝试通过 Scala 脚本运行它时,我得到了这个
Could not find file: users_off.png
Could not find file: /Users/mdedetrich/3dot/blublocks/src/main/webapp/img/sidebar/my\
Could not find file: group/users_off.png
CPU time decoding 0.000, encoding 0.000, other 0.000, total 0.000 seconds
知道我做错了什么吗?Scala 不解析有空格的字符串似乎是一个问题(并且用 Seq 分割它也不起作用)。我尝试过使用带空格的文字字符串和 Seq,但似乎都不起作用。