2013-08-01 31 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

相關問題