我正在从Java类执行一些脚本。在那里,我执行脚本并等待结果。但是,当我执行这些文件时,我没有从脚本中获得退出状态的真正价值。
如果我执行以下脚本:
./relativePath/script.sh
然后我打印出值:
echo $?
我获得正确的值。但是因为我在Java程序中接收它,所以我不能只打印$?
,而只是使用类Process
接收退出值(所有这些都是正确的,直到这里)。所以我这样做:
Process program;
program = Runtime.getRuntime().exec(new String[]
{file});
program.waitFor();
if ( program.exitValue() == 0)
{
result = true;
}
但正如我在问题标题中所说,当我以这种方式执行脚本时,我没有得到正在等待的正确退出状态值。
为什么
我已经用C编译的程序尝试了它并且工作正常,并检查在这种情况下exec状态的输出也保存在$?
中。
提前谢谢!
答案 0 :(得分:1)
我发现这些文件是用root用户复制的,因为它们有744
作为权限值,所以tomcat无法运行它们。
刚刚解决了它:
chown tomcat6:tomcat6 /pathOfScripts/*.sh