我正在尝试执行一个来自Java程序的Shell脚本(使用Perl脚本和其他Shell脚本),但是我不成功,这是我尝试的:
在Linux服务器上,在文件夹test1/testjava中可用以下脚本:
- decode24.sh(我从Java程序中调用的主要脚本,此脚本利用下面列出的其他脚本)
- fram.sh
- Shadow.pl
- 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.pl
和fram.sh
脚本。可能是因为运行脚本时未将CWD或路径设置为脚本DIR。
解决方案的最强大方法是更改decode.sh
脚本以将绝对路径使用到shadow.pl
和fram.sh
脚本。这样,您可以从任何目录执行decode.sh
。
如果使用bash,请查看此问题,以解决将绝对目录解析到脚本的整洁方法,以避免硬编码路径。
让DECODE.SH找出它所在的目录(请参阅Bash解决方案),并使用路径来调用其他路径。