当我运行myTest.jar时,它在STDOUT中输出大量信息(不在文件中),我试图读取/搜索该文件以获取特定字符串作为变量放入我的bash脚本中。
java stdout:
line 1 info............
line 2 info...........
....
...
Successful (either 'Successful' or 'Failed')
如何在bash中搜索stdout中的最后一行或('Successful'或'Failed')而不将stdout重定向到文件?
提前致谢
答案 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