我一直在尝试从 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"
被分成两个参数。如何将它们组合成一个论点?
我正在使用msys
带有mintty
终端的 Windows 7。