Tag: shell

java Runtime.exec运行shell脚本 – 无法打开文件

我正在使用Runtime.getRuntime()。exec()从java代码运行shell脚本。 String[] cmd = {“sh”, “build.sh”, “/Path/to my/sh file”}; try{ Process proc = Runtime.getRuntime().exec( cmd ); } catch(Exception e){ System.out.println(“Exception is:”+e); } 它在控制台中给出了以下输出: sh: Can’t open build.sh 我在这里采取了一些错误的做法吗? 无法弄清楚为什么他会发生。 编辑 根据这里的评论,我修改了String[] cmd = {“sh”, “build.sh”, “/Path/to my/sh file”}; to String[] cmd = {“sh”, “/Path/to my/sh file/build.sh”, “/Path/to my/sh file”}; 。 现在问题是这个脚本需要从特定路径执行。 当我从命令提示符执行此脚本时,我首先将目录更改为该路径并执行它。 我该如何修改此代码?

重定向应用程序(java)的输入,但仍允许在BASH中使用stdin

我有点困惑,我昨天有这个工作,但它刚刚停止接受重定向的标准输入,几乎是神奇的。 set -m mkfifo inputfifo mkfifo inputfifo_helper ((while true; do cat inputfifo; done) > inputfifo_helper)& trap “rm -f inputfifo inputfifo_helper java.pid; kill $!” EXIT exec 3<&0 (cat inputfifo)& NOW=$(date +”%b-%d-%y-%T”) if ! [ -d “logs” ]; then mkdir logs fi if [ -f “server.log” ]; then mv server.log logs/server-$NOW.log fi java java.pid && fg 运行正常,我可以回复inputfifo并且应用程序得到它,我也可以直接输入它的控制台。 […]

从Java执行Shell脚本,Shell脚本具有读取操作

我有一个Shell Scripts来读取输入 #!/bin/bash echo “Type the year that you want to check (4 digits), followed by [ENTER]:” read year echo $year 我正在使用JAVA APi执行这个shell脚本 ProcessBuilder pb = new ProcessBuilder(“/bin/bash”, “/junk/leaptest.sh”); final Process process = pb.start(); InputStream is = process.getInputStream(); InputStreamReader isr = new InputStreamReader(is); BufferedReader br = new BufferedReader(isr); String line; while ((line = br.readLine()) != […]

使用Runtime.getRuntime()。exec从定义的目录执行文件

我只想从特定文件夹执行我的文件。 在我的情况下/ data / data / my-package / files /。 所以我试过: Process process2=Runtime.getRuntime().exec(“cd /data/data/my-package/files/”); process2.waitFor(); process2=Runtime.getRuntime().exec(“./myfile”); 它不起作用。 请有人告诉我正确的方法。 谢谢

你如何强制java swt程序“将自己移到前台”?

目前有了swt,我有时想让一个程序随意地走到前台(就像闹钟一样)。 通常以下作品(jruby): @shell.setMinimized(false) @shell.forceActive 如果它被最小化,它会将壳体带到前面。 随时创建一个新shell也会将(新shell)带到前面。 到目前为止,如果shell 没有最小化,上面的代码只是闪烁(闪烁)任务栏中的应用程序图标。 实际上,当你第一次运行它时,它会把它带到前面。 之后,它只是在任务栏中闪烁。 那是窗户。 在Linux上,它似乎只在任务栏中闪烁(默认为ubuntu)。 有人知道跨平台的方式让应用程序走到前面,在swt? 看来没有任何forceActive的setActive setMinimized(false)setFocus forceFocus和setVisible都可以完成这件事。 我很确定它是可能的(至少在Windows中),就像E文本编辑器那样。 嗯,这不是swt,但至少其他一些应用程序已经知道这样做 。 我想也许这是swt bug 192036 ? 非常感谢。 有关: 如何将窗户拉到前面? 打开壳牌 将窗口保持在前景中(即使它失去焦点) 错误244597 – 无法在gtk上以编程方式激活shell 需要在Windows上将应用程序带到前台 如何将窗户拉到前面? 这个摆动的例子可能也是某种类型的线索……

在shell脚本中嵌入可执行二进制文件

首先,我已经使用Google搜索,但只找到了将压缩文件(例如.tar.gz )嵌入到shell脚本中的示例。 基本上如果我有一个打印字符串的C程序( hello.c ),请说Hello World! 。 我编译它以获得可执行的二进制文件 gcc hello.c -o hello 现在我有一个shell脚本testEmbed.sh 我要问的是,是否可以在shell脚本中嵌入二进制文件( hello ),以便在运行时 ./testEmbed.sh 它执行二进制文件来打印Hello World! 。 澄清 :一种方法是将可执行文件压缩到一个存档中,然后在脚本运行时将其解压缩。 我要问的是,如果没有它可以运行程序。 到目前为止,我正在尝试这种方法。 但它对我不起作用。 我猜作者正在另一个架构上使用其他一些发行版。 所以,基本上这对我不起作用。 :P 另外,如果C程序的工作流程与Java jar不同,我也想知道!

从java代码运行shell脚本并传递参数

我正在从Java程序执行shell脚本。 我已经使用Runtime类实现了它。 以下是我实施的代码 final StringBuilder sb = new StringBuilder(“test.sh”); sb.append(“/path to/my/text file”); final Process p = Runtime.getRuntime().exec(sb.toString()); 这里sb是字符串缓冲区对象,我在其中附加我的参数并在exec方法中使用它。 但问题是我传递的参数“/ path to / my / text file”被认为是4个参数 /path to /my/text file 但是如果在shell中运行test.sh“/ path to / my / text file”,它将作为单个参数。 如何使用Java代码实现相同的function,我需要将此路径与空格作为单个参数进行考虑。 任何请你真的很感激。

从Java执行shell命令

我正在尝试从GNU / Linux平台上的Java应用程序执行shell命令。 问题是调用另一个java应用程序的脚本永远不会结束,尽管它从bash成功运行。 我试着调试它: (gdb)bt __kernel_vsyscall()中的#0 0xb773d422 pthread_join中的#1 0xb7709b5d(threadid = 3063909232,thread_return = 0xbf9cb678):pthread_join.c:89 ContinueInNewThread()中的#2 0x0804dd78 #3 0x080497f6 in main() 我尝试过:ProcessBuilder(); 和Runtime.getRuntime()。exec(cmd); 看起来它等待完成一些事情。 有任何想法吗? 谢谢Laurenţiu

在Java中访问shell环境变量

有谁知道如何在Java中访问标准shell环境的环境变量? 我正在使用ProcessBuilder类,我必须指定我正在运行的shell脚本中使用的特定环境变量,这些变量存在于标准shell环境中。 访问ProcessBuilder环境不起作用。

通过java运行shell脚本

我想通过java运行一个shell脚本。我正在使用许可证生成工具,它可以在./LicenseGen.sh命令的帮助下调用,在它下我需要执行另一个命令create licensekey -x license-input.xml创建一个新的licensekey.xml文件,其中license-input.xml是一个输入文件,licensekey是输出xml文件,如何在java中提供帮助我。 我的代码是 import java.io.*; import java.util.*; public class ProcessExample { /** * @param args */ public static void main(String args[]) throws IOException { File file=new File(“/opt”); // List list=new List(); ProcessBuilder processBuilder = new ProcessBuilder(“./LicenseGen.sh”); processBuilder.directory(file); Process process=processBuilder.start(); //processBuilder.command(“create licensekey -x license-input.xml”); //process=processBuilder.start(); InputStream is = process.getInputStream(); InputStreamReader isr = new InputStreamReader(is); […]