2012-01-19 35 views
0

我想了解一些關於bash命令 - 更具體的關於備份腳本。 不幸的是,我在最後一行出現語法錯誤。我不知道我做了什麼錯誤,並希望對此事提供任何反饋。Ubuntu的bash - 文件錯誤的意外結局

代碼:

#!/bin/sh 

if [ -f $"/archive/backup-20110111.tar.gz" ]; then 
    echo "File already exists" 
else 
    sudo cp /home/plepple/Documents/backup/backup-20110111.tar.gz 
      /home/plepple/Documents/backup/archive/backup-20110111.tar.gz 
    rm /home/plepple/Documents/backup/backup-20110111.tar.gz 
fi 

if [ -f $"/archive/backup-20110112.tar.gz" ]; then 
    echo "File already exists" 
else 
    sudo cp /home/plepple/Documents/backup/backup-20110112.tar.gz 
      /home/plepple/Documents/backup/archive/backup-20110112.tar.gz 
    rm /home/plepple/Documents/backup/backup-20110112.tar.gz 
fi 

curdate='date +%Y%m%d' 
mv /home/plepple/Documents/backup/backup.tar.gz 
    /home/plepple/Documents/backup/backup-$curdate.tar.gz 

我試着去執行它(通過bash)的有:

bash backupscript.sh 

所有的文件和目錄存在。

謝謝!

回答

3
mv /home/plepple/Documents/backup/backup.tar.gz 
    /home/plepple/Documents/backup/backup-$datum.tar.gz 

應該

mv /home/plepple/Documents/backup/backup.tar.gz \ 
    /home/plepple/Documents/backup/backup-$datum.tar.gz 

這同樣適用於

sudo cp /home/plepple/Documents/backup/backup-20110111.tar.gz \ 
      /home/plepple/Documents/backup/archive/backup-20110111.tar.gz 

sudo cp /home/plepple/Documents/backup/backup-20110112.tar.gz \ 
      /home/plepple/Documents/backup/archive/backup-20110112.tar.gz 
+0

整個腳本中缺少換行符。也許這只是一個粘貼問題:) – 2012-01-19 15:30:06

+0

這似乎是問題,只是在bash中檢查它 –

+0

它似乎工作,但我得到另一個錯誤:「目標'%Y%m%d'不是一個目錄。 「有任何想法嗎? –

1

哪裏fi s到結束if塊?

+0

嘿!我只是編輯了代碼,真的很抱歉。我假設在「其他」之後只需要「fi」,而不是在「if」之後? :) –

1

這不是問題,只是一個雜項bash語法校正:在bash中,構造$"somestring"調用本地化。從bash的手冊頁:

A double-quoted string preceded by a dollar sign ($) will cause the 
string to be translated according to the current locale. If the cur- 
rent locale is C or POSIX, the dollar sign is ignored. If the string 
is translated and replaced, the replacement is double-quoted. 

這並不似乎是有關你的if測試的文件路徑,所以你可能要離開$關閉。實際上,由於文件路徑中沒有任何有趣的字符,因此您甚至不需要引號(儘管過度使用雙引號比使用不足更好)。

相關問題