0

我收到了这个意外的“完成”令牌错误

echo -e "Enter the file stem name"
read filestem
for i in {1..22}
do
    `java -cp /export/home/alun/jpsgcs/ CMorgansToTheta $filestem_$i.INPUT.par $filestem_$i.THETA.par`
done
4

2 回答 2

5

如果 Java 程序没有写入任何内容,则您的for循环等效于(由于反引号)

for i in {1..22}
do
done

这会产生您看到的错误。您可能只是想删除反引号来运行程序 22 次:

echo -e "Enter the file stem name"
read filestem
for i in {1..22}
do
    java -cp /export/home/alun/jpsgcs/ CMorgansToTheta "${filestem}_$i.INPUT.par" "${filestem}_$i.THETA.par"
done
于 2013-06-18T17:37:34.170 回答
1

在您的 Java 命令行中:

java -cp /export/home/alun/jpsgcs/ CMorgansToTheta $filestem_$i.INPUT.par $filestem_$i.THETA.par

您正在使用:

$filestem_$i

这将相当于:

${filestem_}${i}

因为下划线_在 shell 中不被视为单词边界,而整体filestem_将被视为变量名。您很可能应该使用:

${filestem}_${i}

你能告诉我这个脚本的输出吗?

#!/bin/bash
set -x
echo -e "Enter the file stem name"
read filestem
for i in {1..3}
do
    echo "java -cp /export/home/alun/jpsgcs/ CMorgansToTheta ${filestem}_${i}.INPUT.par ${filestem}_${i}.THETA.par"
done
于 2013-06-18T17:47:51.757 回答