我正在从sh文件运行以下命令。
echo "This is job" $SLURM_ARRAY_TASK_ID
#! Command line that we want to run:
SLURM_ARRAY_TASK_ID=0
varData='mvn -e clean compile exec:java -Dexec.mainClass=App.Main -Dexec.args="wikiLineSPlits/wiki-004/ wiki-004-'$SLURM_ARRAY_TASK_ID'.txt wiki-004-'$SLURM_ARRAY_TASK_ID' wikiOuts/ wiki-004"'
echo $varData
$varData
在这里,运行代码将产生以下输出:
mvn -e clean compile exec:java -Dexec.mainClass=App.Main -Dexec.args="wikiLineSPlits/wiki-004/ wiki-004-0.txt wiki-004-0 wikiOuts/ wiki-004"
Unknown lifecycle phase "wiki-004-0.txt"
但是,如果我将输出从echo $varData
复制粘贴到我的终端屏幕,则该程序会严格执行。我不确定错误的根源是什么。任何帮助将不胜感激。
echo $varData
的输出:
mvn -e clean compile exec:java -Dexec.mainClass=App.Main -Dexec.args="/home/ak2329/rds/hpc-work/feverDataset/wikiLineSPlits/wiki-004/ wiki-004-0.txt wiki-004-0 /home/ak2329/rds/hpc-work/feverDataset/wikiOuts/ wiki-004"
答案 0 :(得分:1)
我会尝试:
$(echo $varData)
作为脚本的最后一行
答案 1 :(得分:1)
问题是您的maven命令行的每个阶段正在传递range
参数,而-Dexec
和clean
都不知道该怎么做他们。如果您重写有关阶段的命令
compile
和 mvn exec
并且仅将mvn clean compile
args传递到第二阶段,那么您应该不会遇到这些错误。
答案 2 :(得分:0)
我最终决定直接使用shell命令,而不是将其存储到变量中。
mvn -e clean compile exec:java -Dexec.mainClass=App.Main -Dexec.args="wikiLineSPlits/wiki-004/ wiki-004-'$SLURM_ARRAY_TASK_ID'.txt wiki-004-'$SLURM_ARRAY_TASK_ID' wikiOuts/ wiki-004"
以前使用的命令是:
varData='mvn -e clean compile exec:java -Dexec.mainClass=App.Main -Dexec.args="wikiLineSPlits/wiki-004/ wiki-004-'$SLURM_ARRAY_TASK_ID'.txt wiki-004-'$SLURM_ARRAY_TASK_ID' wikiOuts/ wiki-004"'
echo $varData