Bash for循环问题与文件名

时间:2012-09-14 20:43:43

标签: bash for-loop cp

我有一个简单的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扩展名。也就是说,没有文件被复制。

有谁知道如何解决这个问题。

谢谢!

1 个答案:

答案 0 :(得分:5)

问题是bash将$i_cmin解释为变量。要修复它,使用大括号告诉bash $i是一个变量,应该解释为:

cp Files/crystal${i}_cmin.pdb Energy/
cp Files/crystal${i}_cmin.psf Energy/