繁体   English   中英

从Java在Linux中执行Shell脚本(使用Perl和其他Shell脚本的Shell脚本)

[英]Execute a shell script (shell script which uses perl and other shell scripts) in Linux from java

我正在尝试从Java程序执行shell脚本(利用perl脚本和其他shell脚本),但是我没有成功,这是我尝试的方法:

在Linux服务器上,在文件夹test1 / testJava中,可以使用以下脚本:

  1. encode24.sh(我从Java程序调用的主要脚本,该脚本利用了下面列出的其他脚本)
  2. fram.sh
  3. shadow.pl
  4. light.sh

这是我尝试从Java:

try {
        ConnBean cb = new ConnBean("xx.yyy.zz.p", "user","passme");
        ssh = SSHExec.getInstance(cb);
        CustomTask ct1 = new ExecShellScript("/test1/testJava", "./decode24.sh", "arg1");
        ssh.connect();
        net.neoremind.sshxcute.core.Result res = ssh.exec(ct1);
 }catch......

执行后的结果:

错误信息:

./decode.sh[17]: shadow.pl: not found [No such file or directory]
./decode.sh[21]: fram.sh: not found [No such file or directory]

该错误来自您的decode.sh脚本。 它找不到执行的shadow.plfram.sh脚本。 可能是因为在运行脚本时CWD或路径未设置为脚本目录。

解决此问题的最可靠方法是更改​​您的decode.sh脚本,以使用shadow.plfram.sh脚本的绝对路径。 这样,您可以从任何目录执行decode.sh

如果您使用bash,请查看问题以找到一种巧妙的方法来将绝对目录解析为脚本,从而避免对路径进行硬编码。

让解码.sh找出它所在的目录(请参阅bash解决方案 )并使用该路径调用其他目录。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM