从Java调用时,bash脚本的退出值不同

时间:2015-03-08 14:41:07

标签: java bash shell

我正在从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状态的输出也保存在$?中。

提前谢谢!

1 个答案:

答案 0 :(得分:1)

我发现这些文件是用root用户复制的,因为它们有744作为权限值,所以tomcat无法运行它们。

刚刚解决了它:

 chown tomcat6:tomcat6 /pathOfScripts/*.sh