1

我有一个在 Ubuntu 中运行 Shell 脚本(带参数)的独立应用程序。

ProcessBuilder pb1 = new ProcessBuilder("sh","deltapackage_app.sh","part_value","pathtofile"); 
Process process1 = pb1.start();

我正在通过 GUI 获取参数。现在我想在 Web 应用程序中实现同样的事情,我可以从网页中获取输入并将其发送到服务器,然后服务器将执行带有参数的 shell 脚本。

任何人都可以建议我这样做的最佳方法。我应该用什么东西来做到这一点。

我知道我必须学习很多关于服务器的东西。或者我可以将相同的代码与基于浏览器的应用程序一起使用。

4

1 回答 1

1

考虑以下代码行:

Process p = Runtime.getRuntime().exec("/bin/sh -c /bin/ls > ls.out");

这是为了执行 Bourne shell 并让 shell 执行 ls 命令,将 ls 的输出重定向到文件 ls.out。使用 /bin/sh 的原因是为了解决标准输出被 Java 内部重定向的问题。不幸的是,如果你尝试这个,什么都不会发生。当这个命令字符串被传递给 exec() 方法时,它将被分解成一个字符串数组,其中的元素是“/bin/sh”、“-c”、“/bin/ls”、“>”和“ ls.out”。这将失败,因为 sh 只希望“-c”开关有一个参数。为了使这项工作尝试:

    String[] cmd = {"/bin/sh", "-c", "/bin/ls > out.dat"};
    Process p = Runtime.getRuntime().exec(cmd);

由于命令行已经是一系列字符串,字符串将简单地通过 exec() 方法加载到命令数组中,并按原样传递给新进程。因此,shell 将看到一个“-c”和命令“/bin/ls > ls.out”并正确执行。

http://www.ensta-paristech.fr/~diam/java/online/io/javazine.html

于 2012-06-28T08:14:31.243 回答