我一直在谷歌搜索,每个人似乎有一个不同的解决方案,似乎没有一个对我有用.
我曾经尝试都ProcessBuilder和Runtime.两者都.sh直接调用文件并将其提供给/bin/bash.没有运气.
回到基础,我目前的代码如下;
String cmd[] = { "~/path/to/shellscript.sh", "foo", "bar" };
Process p = Runtime.getRuntime().exec(cmd);
Run Code Online (Sandbox Code Playgroud)
No such file or directory即使手动运行,也会出错;
~/path/to/shellscript.sh foo bar
Run Code Online (Sandbox Code Playgroud)
从bash完美运作.
我需要保留,~因为这个shellcript以三种不同用户的略有不同的形式存在.
rua*_*akh 13
一种选择是~自己处理:
String homeDir = System.getenv("HOME");
String[] cmd = { homeDir + "/path/to/shellscript.sh", "foo", "bar" };
Process p = Runtime.getRuntime().exec(cmd);
Run Code Online (Sandbox Code Playgroud)
另一个是让Bash为你处理它:
String[] cmd = { "bash", "-c", "~/path/to/shellscript.sh foo bar" };
Process p = Runtime.getRuntime().exec(cmd);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
24369 次 |
| 最近记录: |