2

WindowsマシンのmsysでbashスクリプトからいくつかのJavaプログラムを実行しようとしています。具体的には、コマンド ラインで WEKA を使用していくつかのタスクを自動化しています。引用符で囲まれた文字列が Java に正しく渡されないという問題があります。実際のコードは、実行するコマンドの配列をループします。これは簡略化されたバージョンです。つまり$RUN、配列要素文字列を含む単一の反復です。

#!/bin/bash

export CLASSPATH=CLASSPATH:weka.jar:libsvm.jar

RUN="java weka.classifiers.functions.LibSVM -S 0 -K 2 -D 3 -G 0.0 -R 0.0 -N 0.5 -M 1000.0 -C 1000000.0 -E 0.0010 -P 0.1 -Z -W '1 2' -t trainFile.csv -T testFile.csv "

# does not work, returns => Weka exception: For input string: "'1"
$RUN  > reportFile.txt

RUN="java weka.classifiers.functions.LibSVM -S 0 -K 2 -D 3 -G 0.0 -R 0.0 -N 0.5 -M 1000.0 -C 1000000.0 -E 0.0010 -P 0.1 -Z -W \"1 2\" -t trainFile.csv -T testFile.csv "

# does not work, returns => Weka exception: For input string: ""1"
$RUN > reportFile.txt

RUN="java weka.classifiers.functions.LibSVM -S 0 -K 2 -D 3 -G 0.0 -R 0.0 -N 0.5 -M 1000.0 -C 1000000.0 -E 0.0010 -P 0.1 -Z -t trainFile.csv -T testFile.csv "

# works without the string argument for -W
$RUN  > reportFile.txt

問題は、文字列"1 2"が 2 つの引数に分割されていることです。どのようにそれらを 1 つの引数に組み合わせることができますか?

ターミナルでWindows 7を使用msysしていminttyます。

4

1 に答える 1

0

この回避策を試してください:

RUN="weka.classifiers.functions.LibSVM -S 0 -K 2 -D 3 -G 0.0 -R 0.0 -N 0.5 -M 1000.0 -C 1000000.0 -E 0.0010 -P 0.1 -Z -W \"1 2\" -t trainFile.csv -T testFile.csv"
echo $RUN | xargs java > reportFile.txt
于 2011-10-19T06:28:38.880 に答える