使用Java.exec()执行mv命令;
我正在尝试通过LinuxMV命令移动文件。 我有以下代码:使用Java.exec()执行mv命令;,java,linux,Java,Linux,我正在尝试通过LinuxMV命令移动文件。 我有以下代码: processBuilder.command("/bin/sh", "-c", "\"mv", "\"" + rawOutput + "/" + dir + "/build/libs/*\"", "\"" + startDir + "/test.jar\"\""); 在执行过程中,它转换为 /bin/sh -c "mv "/home/test/update/Test-test-23afi369890Ajk/buil
processBuilder.command("/bin/sh", "-c", "\"mv", "\"" + rawOutput + "/" + dir + "/build/libs/*\"", "\"" + startDir + "/test.jar\"\"");
在执行过程中,它转换为
/bin/sh -c "mv "/home/test/update/Test-test-23afi369890Ajk/build/libs/*" "/home/test/test.jar""
/bin/sh-c“mv”/home/test/update/test-test-23afi369890Ajk/build/libs/*“”/home/test/test.jar“
虽然此命令通过命令行完美执行,但在jar执行期间失败。
给出了以下错误:
"/home/test/update/Test-test-23afi369890Ajk/build/libs/*": 1: "/home/test/update/Test-test-23afi369890Ajk/build/libs/*": Syntax error: Unterminated quoted string
提前谢谢 下面是要执行的shell命令:
mv /home/test/update/Test-test-23afi369890Ajk/build/libs/* /home/test/test.jar
下面是用Java构建这个shell命令的Java连接(您应该打印并复制粘贴到shell以验证它):
以下是如何在shell中运行它:
processBuilder.command("/bin/sh", "-c", myCmd);
这将给出以下参数列表:
/bin/sh
-c
mv/home/test/update/test-test-23afi369890Ajk/build/libs/*/home/test/test.jar
String myCmd = "mv \"$1\"/build/libs/* \"$2\"/test.jar";
processBuilder.command("/bin/sh", "-c", myCmd, "_", rawOutput, dir);
其参数列表为:
/bin/sh
-c
mv“$1”/build/libs/*“$2”/test.jar
。
/home/test/update/test-test-23afi369890Ajk
/home/test
\uuu
变为$0
,即用于错误消息和类似信息的脚本文件名)
在执行期间[我的尝试]转换为
/bin/sh -c "mv "/home/test/update/Test-test-23afi369890Ajk/build/libs/*" "/home/test/test.jar""
我不知道你是怎么得出这个结论的。它扩展到的实际参数列表是:
/bin/sh
-c
“mv
“/home/test/update/test-test-23afi369890Ajk/build/libs/*”
“/home/test/test.jar”“
$ /bin/sh -c '"mv' '"/home/test/update/Test-test-23afi369890Ajk/build/libs/*"' '"/home/test/test.jar""'
"/home/test/update/Test-test-23afi369890Ajk/build/libs/*": 1: Syntax error: Unterminated quoted string