2012-09-01 194 views
3

我正在創建一個簡單的腳本,它將幫助我的Ubuntu服務器管理我的備份。我每隔x個小時從本地機器壓縮文檔,並將其轉移到備份機器。我想要有最大數量的備份可以保留在我的備份目錄中。我正在編寫一個腳本,如果已達到最大數量的備份,它將刪除較早的備份。這是我迄今爲止所做的,當我運行腳本時它會生成一個名爲MAX_backups的文件。任何想法爲什麼這個文件正在創建?在bash編程方面,我的經驗非常豐富,但任何幫助都將不勝感激。謝謝。Bash腳本創建意外文件

#!/bin/bash 

backup_count=$(ls ~/backup | wc -w) 

MAX_backups='750' 

extra_count=$((backup_count - MAX_backups)) 

if [ backup_count > MAX_backups ] 
then 
     for ((i=0; i <= extra_count; i++)) 
     do 
       file=$(ls ~/backup -t -r -1 | head --lines 1) 
       rm ~/backup/"$file" 
     done 
fi 

回答

7
if [ backup_count > MAX_backups ] 

>該被解釋爲一個文件重定向。嘗試下列操作之一:

# ((...)) is best for arithmetic comparisons. It is parsed specially by the shell and so a 
# raw `>` is fine, unlike within `[ ... ]` which does not get special parsing. 
if ((backup_count > MAX_backups)) 

# [[ ... ]] is a smarter, fancier improvement over single brackets. The arithmetic operator 
# is `-gt`, not `>`. 
if [[ $backup_count -gt $MAX_backups ]] 

# [ ... ] is the oldest, though most portable, syntax. Avoid it in new bash scripts as you 
# have to worry about properly quoting variables, among other annoyances. 
if [ "$backup_count" -gt "$MAX_backups" ] 
+0

這是完美的!非常感謝你的幫助。 – Kyle

0

不知道爲什麼文件被創建,但我會想你的「測試」的版本(括號運算符if語句)創建此文件。 我覺得比較應該改成

if [ $backup_count -gt $MAX_backups ] 

編輯:當然!我錯過了文件重定向,這就是創建文件的原因。