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