我有一个简单的bash for循环,我试图在其中执行一个命令。循环是这样我可以执行不同的文件名。
文件是:
crystal0_cmin.pdb
crystal1_cmin.pdb
.
.
.
循环是:
for ((i=0;i<=10;i++))
do
cp Files/crystal$i_cmin.pdb Energy/
cp Files/crystal$i_cmin.psf Energy/
done
问题是我总是收到以下错误消息:
cp: cannot stat `Files/crystal.pdb': No such file or directory
cp: cannot stat `Files/crystal.psf': No such file or directory
但我从未指定文件crystal.pdb和crystal.psf。它只是忽略了所有i的$ i扩展名。也就是说,没有文件被复制。
有谁知道如何解决这个问题。
谢谢!
答案 0 :(得分:5)
问题是bash将$i_cmin
解释为变量。要修复它,使用大括号告诉bash $i
是一个变量,应该解释为:
cp Files/crystal${i}_cmin.pdb Energy/
cp Files/crystal${i}_cmin.psf Energy/