需求:java
源于我一个业务实现,须要经过shell脚本去调Java程序,而且可以拿到Java里面的返回值。mysql
思路:linux
众所周知,经过shell调用Java,确定是经过 Java -jar xxx.jar 命令去调用jar的某个main函数了,若是想返回来值,最好的办法固然是System.out.println("返回值"),能够类比于日志打印的方式。否则你用echo $?,只能拿到返回给OS的值了。既然经过打日志的方式,那么固然经过>方式存入某个日志文件了,怎么样同时存储到日志文件而且能在屏幕上展现呢?sql
linux里面有个tee命令,shell
功能说明:读取标准输入的数据,并将其内容输出成文件。 语 法:tee [-ai][--help][--version][文件...] 补充说明:tee指令会从标准输入设备读取数据,将其内容输出到标准输出设备,同时保存成文件(此时文件不存在会建立新文件)。 参 数: -a或--append 附加到既有文件的后面,而非覆盖它. -i-i或--ignore-interrupts 忽略中断信号。 --help 在线帮助。 --version 显示版本信息。
详细.sh以下:app
#sh ./install.sh claspath='../lib/*:../plugins/*' ../jre/bin/java -Dbsp-mysql -Dlogback.configurationFile=../conf/logback.xml -Dbase.dir=../ -cp $claspath com.broada.bsp.mysql.TestAvgs |tee run.log 2 &