我是shell脚本的新手,我正在尝试编写一个简单的脚本来通过程序运行大量文件。我正在尝试获取一个文件,所有文件都以名称restart
开头,位于r0970.t240
目录中,并将单个文件复制到文件st2.res
,该文件的名称为我运行的程序所接收和分析的文件位于名为crystal
的目录中。这是我希望为所有文件重复的过程。我试图这样做,但是当我尝试运行脚本时,我收到以下错误消息:
line 3: syntax error near unexpected token `cp'.
我知道在空间和符号方面涉及到shell脚本时有很多特殊性,所以我很可能忽略了一些东西,但由于我的经验不足,我不知道究竟是什么。任何帮助将不胜感激。
以下是相关脚本:
cd ~Documents/work/useful/r0970.t240
for file in restart*
cp $file ~/desktop/crystal/st2.res
cd ~/desktop/crystal
./a.out
rm st2.res
done
答案 0 :(得分:1)
shell脚本中的(for
)循环需要do
作为其头部的一部分。您还应引用变量,尤其是在处理文件名时,否则您的脚本将在带有空格的文件名中断开。
E.g:
for file in restart*; do
# ^^^^
cp "$file" ~/desktop/crystal/st2.res
[...]
done
您还应该考虑而不是cd
进入目录,使用绝对路径并缩进代码以提高可读性。