簡體   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