繁体   English   中英

从bash脚本执行java程序不起作用

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM