需求:
源於我一個業務實現,需要通過shell腳本去調Java程序,並且能夠拿到Java里面的返回值。
思路:
眾所周知,通過shell調用Java,肯定是通過 Java -jar xxx.jar 命令去調用jar的某個main函數了,如果想返回來值,最好的辦法當然是System.out.println("返回值"),可以類比於日志打印的方式。不然你用echo $?,只能拿到返回給OS的值了。既然通過打日志的方式,那么當然通過>方式存入某個日志文件了,怎么樣同時存儲到日志文件並且能在屏幕上展示呢?
linux里面有個tee命令,
功能說明:讀取標准輸入的數據,並將其內容輸出成文件。 語 法:tee [-ai][--help][--version][文件...] 補充說明:tee指令會從標准輸入設備讀取數據,將其內容輸出到標准輸出設備,同時保存成文件(此時文件不存在會創建新文件)。 參 數: -a或--append 附加到既有文件的后面,而非覆蓋它. -i-i或--ignore-interrupts 忽略中斷信號。 --help 在線幫助。 --version 顯示版本信息。
詳細.sh如下:
#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 &
