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



我正在尝试执行一个来自Java程序的Shell脚本(使用Perl脚本和其他Shell脚本),但是我不成功,这是我尝试的:

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

  1. decode24.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或路径设置为脚本DIR。

解决方案的最强大方法是更改decode.sh脚本以将绝对路径使用到shadow.plfram.sh脚本。这样,您可以从任何目录执行decode.sh

如果使用bash,请查看此问题,以解决将绝对目录解析到脚本的整洁方法,以避免硬编码路径。

让DECODE.SH找出它所在的目录(请参阅Bash解决方案),并使用路径来调用其他路径。

相关内容

  • 没有找到相关文章

最新更新