需求: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 &