这里是你要执行的shell命令。
mv /home/test/update/Test-test-23afi369890Ajk/build/libs/* /home/test/test.jar
下面是在Java中建立这个shell命令的Java连接法(你应该打印并复制粘贴到shell中来验证)。
String myCmd = "mv " + rawOutput + "/build/libs/* " + dir + "/test.jar";
下面是你如何在shell中运行它。
processBuilder.command("/bin/sh", "-c", myCmd);
这就给出了以下参数列表。
/bin/sh
mv /home/test/update/Test-test-23afi369890Ajk/build/libs/* /home/test/test.jar
为了完整起见,这里是你如何should设计的,有一个静态的命令字符串,并将参数作为单独的参数传入,以避免注入shell。
String myCmd = "mv \"$1\"/build/libs/* \"$2\"/test.jar";
processBuilder.command("/bin/sh", "-c", myCmd, "_", rawOutput, dir);
谁的论证清单是。
/bin/sh
mv "$1"/build/libs/* "$2"/test.jar
/home/test/update/Test-test-23afi369890Ajk
/home/test
(_
变成$0
,即脚本的文件名,用于错误信息和类似的内容)
在执行过程中,[我的尝试]转化为
/bin/sh -c "mv "/home/test/update/Test-test-23afi369890Ajk/build/libs/*" "/home/test/test.jar""
我不知道你是如何得出这个结论的。它所展开的实际论证清单是。
/bin/sh
"/home/test/update/Test-test-23afi369890Ajk/build/libs/*"
"/home/test/test.jar""