我正在使用以下 java 代码来执行 bash 命令,当尝试复制文件时,该函数返回非零值,但我能够创建文件。
复制命令:cp demo.txt/shared
输出为:127
创建文件命令:echo 'sample text' > demo.txt
输出为:0
public static int run(final String command)
{
String[] finalCommand;
Process process=null;
int temp=0;
finalCommand = new String[3];
finalCommand[0] = "bash";//"/usr/bin/ksh";
finalCommand[1] = "-c";
finalCommand[2] = command;
try {
final ProcessBuilder processBuilder = new ProcessBuilder(finalCommand);
processBuilder.redirectErrorStream(true);
process = processBuilder.start();
temp=process.waitFor();
}
catch (IOException e)
{
System.out.println( e.getMessage());
}
catch (InterruptedException e) {
System.out.println(e.getMessage());
}
return temp;
}
请帮忙
最佳答案
cp 失败和 echo 工作的一种可能性是由于 cp 是外部命令而 echo 是内置命令。
如果设置并导出了 PATH 环境变量,则外部命令只能通过其文件名找到。
但在这种情况下,永远不要依赖 PATH - 使用完整路径名:
String command = "/bin/cp demo.txt /shared";
还有:你有/shared 的写权限吗?
关于java - bash 命令使用 java process builder 复制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27738429/