bash脚本:搜索Java STDOUT以获取变量

时间:2014-09-10 17:31:23

标签: java linux bash stdout

当我运行myTest.jar时,它在STDOUT中输出大量信息(不在文件中),我试图读取/搜索该文件以获取特定字符串作为变量放入我的bash脚本中。

java stdout:

line 1 info............ 

line 2 info........... 

.... 

...

Successful    (either 'Successful' or 'Failed')

如何在bash中搜索stdout中的最后一行或('Successful'或'Failed')而不将stdout重定向到文件?

提前致谢

3 个答案:

答案 0 :(得分:7)

这不是检查成功或失败的好方法。

您应该重写myTest.jar以在成功时使用System.exit(0),在错误时使用System.exit(1)(或更高)。如果程序编写得很好,它就会这样做。

然后您可以使用例如

检查bash的成功或失败
if java -jar mytest.jar 
then
  echo "The command succeeded :D"
else
  echo "The command failed :("
fi

所有UNIX程序都以这种方式工作,您应该确保myTest.jar也不例外。

答案 1 :(得分:0)

要使其工作,您需要将stdout重定向到文件,然后cat / vim /搜索该文件。 Bash不会自己保存命令的输出。

或者,您可以使用screen之类的程序,它允许您将会话的记录保存到文件中。您可以获得所有内容和命令行的输出。

答案 2 :(得分:0)

对于未来的用户,我使用"其他人' "方法有一些小的调整:

1)退出代码以及在运行jar之后你必须做什么,在其他部分对我不起作用

2)我读了我收到的退出代码并为我的条件做了一个if循环(0-2)在java中给出了退出代码

3)我的bash代码

EXIT_CODE=$?
echo Exit code: $EXIT_CODE

if [ $EXIT_CODE = "0" ]
then
    ...............do something
elif [$EXIT_CODE = "1"]
then
    ...............do something
else
    ...............do something
fi