一、Shell中調用jar包並傳參的方式
# jar包路徑
JAR_PATH=home/bin/test.jar
# 要傳遞的參數
PARAM="1"
# 調用jar包
java -jar $JAR_PATH $PARAM
或者直接 java -jar home/bin/test.jar "1"
"1" 將傳遞到jar包主程序的main方法中的參數列表第一位,如果有兩個參數,怎麼在後面 空格 +參數,例如:
java -jar home/bin/test.jar "1" "2"
如果調用jar包成功,怎麼和Shell正常結束程序一樣,返回0,可以用$?進行判斷:
if [ $? -ne 0 ]; then
echo "=====調用失敗 ====="
exit 1
fi
二、如何在調用jar包成功後,獲取java程序返回的參數
有兩種方式:
1、管道,比較複雜,不推薦使用
2、通過jar包中主程序方法裏面的的輸出語句System.out.prinln("123"),如果主方法中調用了外部方法,方法中有輸出語句,那麼需要注意,都會被當做Shell當做參數接收。
獲取jar輸入的參數的方式爲:
# 用變量接收參數
VAR=$(java -jar $JAR_PATH $PARAM)
# 輸出返回值
echo $VAR
完整實例:
#!/bin/sh
# jar包路徑
JAR_PATH=home/bin/test.jar
# 要傳遞的參數
PARAM="1"
# 調用jar包傳參並接收返回值
VAR=$(java -jar $JAR_PATH $PARAM)
# 判斷調用是否成功
if [ $? -ne 0 ]; then
echo "=====調用失敗 ====="
exit 1
fi
# 成功獲得返回值
echo $VAR
exit 0
因爲程序執行完畢,正常退出返回0,非0的返回都是非正常退出。所以java代碼也可以這麼寫。
public class Test { public static void main(String[] args) { System.exit(4); } }