我得到這個意外的「完成」標記錯誤意外令牌「完成」的錯誤在for循環shell腳本
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
我得到這個意外的「完成」標記錯誤意外令牌「完成」的錯誤在for循環shell腳本
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
如果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
您是否嘗試在腳本的頂部添加'#!/ bin/bash'標頭? –
爲什麼在反引號中有'java -cp ..'?沒有任何意義,除非你將java命令輸出到某個變量。 – 2013-06-18 17:21:44
或刪除反引號?該java程序是否真的返回可執行'bash'語句? –