0

シェル スクリプトから Java jar を呼び出そうとしています。これは、windown バッチ スクリプトで動作します。この動作するバッチ スクリプトをシェル スクリプトに変換しようとしましたが、動作しません。バグはどこですか?

元のバッチ ファイル (完全に動作します):

@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

シェル スクリプト (動作しません):

#!/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 の cygwin と centos でスクリプトをテストしました。

4

1 に答える 1

1

これは、bash スクリプトに DOS 行セパレーターがある場合に発生する多くの素晴らしいことの 1 つです。

dos2unixsed -i 's/\r//'、または利用可能なものなら何でもスクリプトを実行してtr -d '\r'、もう一度やり直してください。

将来の参考のために、次のように、行がゴミで始まり、密かに切り捨てられている場合はいつでも。

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

それよりも

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

改行を扱っていることはわかっています。

于 2013-07-29T23:15:44.270 に答える