[英]Executing java program from bash script does not work
我试图从bash脚本运行java程序(weka)。 该脚本将输入文件,输出文件和包含运行java程序的命令的文件内容(环境变量$CMD
)作为参数。 该脚本无法正常工作,并通知我我使用java的未知选项。 我试图回显程序发送到shell的命令,输出正是正确的命令。 所以我假设echo输出和发送到shell的命令不一样。
所以请告诉我:我做错了什么?
我得到的输出有什么区别......
echo“java $(cat $ CMD)$ in> $ out”
...以及计算机得到的命令?
java“$(cat $ CMD)”$ in> $ out
如果需要更多信息,请评论!
对于熟悉weka(或熟悉java)的人来说,这就是我想要的,以及echo
给我打印的内容:
java -cp /usr/share/java/weka.jar weka.filters.supervised.attribute.AttributeSelection -E "weka.attributeSelection.ClassifierSubsetEval -B weka.classifiers.bayes.NaiveBayes -T" -S "weka.attributeSelection.BestFirst -D 1 -N 14" -i /home/aldorado/weka_examples/iris.arff > /home/aldorado/weka_examples/irisselected131113.txt
在导致故障的行之前添加set -x
。
这将使计算机再次按照它的理解打印命令。 你会看到类似的东西
+ 'java' '-classpath weka.jar name.of.the.main.Class' 'inputFile' > 'outputFile'
请注意,shell使用的引号告诉你“这对我来说是一个词/参数”。 注意空白和引用问题是非常有用的。
请注意,很难获得类似java "$(cat $CMD)" $in > $out
work的东西。 我建议将java
移到$CMD
。 那将允许你说:
bash "./$CMD" $in > $out
或者,如果您使文件可执行:
"./$CMD" "$in" > $out
在$CMD
文件中使用"$1"
获取引用"$in"
的属性:
cp="weka.jar"
cp="$cp;other.jar"
cp="$cp;more.jar"
cp="$cp;foo.jar"
java -classpath "$cp" name.of.the.main.Class "$1"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.