2013-08-01 71 views
1

我是shell脚本编程新手,我试图编写一个简单的脚本来通过程序运行多个文件。我试图创建一个文件,所有这些文件都以名称restart开头,位于r0970.t240目录中,并将单个文件复制到文件st2.res,该文件是我运行的程序所运行的文件的名称位于名为crystal的目录中。这是我希望为所有文件重复的过程。我已经在这样做作出了尝试,但是当我尝试运行该脚本,我得到了以下错误消息:意外令牌附近的语法错误 - shell脚本

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

A(for)在外壳脚本回路需要一个do作为其头部的一部分。你也应该引用你的变量,特别是在处理文件名时,否则你的脚本会用空格打破文件名。

例如为:

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

你也应该考虑,而不是cd荷兰国际集团到一个目录下,使用绝对路径,并缩进你的代码更易读。

+0

非常感谢,这完美解决了我的问题。在继续研究shell脚本时,我会牢记这些技巧。 – Siobhan

+0

感谢您的帮助!仍然了解该网站:-P – Siobhan

相关问题