簡體   English   中英

從Shell腳本調用Java應用

[英]invoke a java app from shell script

我正在嘗試從shell腳本調用Java jar。 它與windown批處理腳本一起使用。 我試圖將此可運行的批處理腳本轉換為Shell腳本,但沒有使其正常工作。 錯誤在哪里?

原始批處理文件(完美運行):

@echo off
rem set the right host here
set host=example.com
set port=8080
set urlPartBeforeApiVersion=/project/api
rem geographical region
set west=47.358352
set south=8.493598
set east=47.406704
set north=8.560889
set numberOfVehicles=10
set idPerfix=SIM_KSDN128D
set vehicleSpeed=40
set gpsSendInterval=10
set cloudmadeApiKey=kldhfjsghjf83hf83hf83hf89whs89
java -jar %~p0dist/application.jar %host% %port% %west% %south% %east% %north% %numberOfVehicles% %idPerfix% %vehicleSpeed% %gpsSendInterval% %urlPartBeforeApiVersion% %cloudmadeApiKey%
pause

Shell腳本(無效):

#!/bin/sh
host="example.com"
port="8080"
urlPartBeforeApiVersion="/project/api"
west="47.358352"
south="8.493598"
east="47.406704"
north="8.560889"
numberOfVehicles="10"
idPerfix="SIM_KSDN128D"
vehicleSpeed="40"
gpsSendInterval="10"
cloudmadeApiKey="kldhfjsghjf83hf83hf83hf89whs89"
java -jar $(dirname $0)/dist/application.jar $host $port $west $south $east $north $numberOfVehicles $idPerfix $vehicleSpeed $gpsSendInterval $urlPartBeforeApiVersion $cloudmadeApiKey

該應用程序將引發Java NumberFormatException並退出。 我在Windows 7和centos上的cygwin上測試了該腳本。

這是當bash腳本具有DOS行分隔符時可能發生的許多奇妙的事情之一。

通過dos2unixsed -i 's/\\r//'tr -d '\\r'或任何可用的腳本運行腳本,然后重試。

供以后參考,每當您看到一行以垃圾開頭並且被秘密截斷時,例如

"xception [...]: For input string: "8080

而不是

Exception [...]: For input string: "8080"

您知道您正在處理回車。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM