意外令牌附近的语法错误 - shell脚本

时间:2013-08-01 12:44:36

标签: shell syntax scripting

我是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

1 个答案:

答案 0 :(得分:1)

shell脚本中的(for)循环需要do作为其头部的一部分。您还应引用变量,尤其是在处理文件名时,否则您的脚本将在带有空格的文件名中断开。

E.g:

for file in restart*; do
#                   ^^^^
    cp "$file" ~/desktop/crystal/st2.res
    [...]
done

您还应该考虑而不是cd进入目录,使用绝对路径并缩进代码以提高可读性。