【发布时间】:2018-12-24 02:03:28
【问题描述】:
我正在尝试复制图像文件并将其设置为背景,使用 Java ProcessBuilder 在 Ubuntu 上运行 shell 脚本。
当我自己从终端运行脚本时,它按预期执行,没有问题。
即./changeBG.sh "jpg"
但是,当从 Java 内部运行时,我得到输出说进程已完成,但在检查文件管理器时,我发现 cp 从未通过,当它运行下一个更改背景的命令时,我最终得到黑色背景.
非常感谢关于为什么 cp 没有发生的线索。
脚本:
#!/bin/bash
mkdir -p /home/$USER/Pictures/Wallpapers
/bin/cp -rf ./images/newimage.$1
/home/$USER/Pictures/Wallpapers/background.$1
gsettings set org.gnome.desktop.background picture-uri "file:///home/$USER/Pictures/Wallpapers/background.$1"
echo done
Java 代码:
try {
String cmd= "./changeBG.sh \"" + currentIMGext + "\"" ;
System.out.println(cmd);
ProcessBuilder bd = new ProcessBuilder(cmd.split(" "));
Process ps = bd.start();
BufferedReader br = new BufferedReader(new InputStreamReader(ps.getInputStream()));
String currentLine;
while (true) {
currentLine = br.readLine();
if (currentLine == null) {
break;
}
System.out.println(currentLine);
}
} catch (Exception e2){
e2.printStackTrace();
}
Java 输出:
./changeBG.sh "jpg"
done
【问题讨论】:
标签: java bash sh processbuilder cp