我收到了这个意外的“完成”令牌错误
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
如果 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
在您的 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