Bash脚本创建一个意外的文件

时间:2012-09-01 06:13:20

标签: file bash unix backup

我正在创建一个简单的脚本来帮助我的Ubuntu-Server管理我的备份。我每隔x小时从本地计算机压缩文档,然后将其翻到我的备份计算机。我想拥有可以保留在备份目录中的最大备份量。我正在编写一个脚本,如果已达到最大备份量,将删除旧备份。这是我到目前为止所做的,当我运行脚本时它正在生成一个名为MAX_backups的文件。有关创建此文件的任何想法?在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

2 个答案:

答案 0 :(得分: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" ]

答案 1 :(得分:0)

不确定文件创建的原因,但我认为您的'test'版本(if语句中的括号运算符)会创建此文件。 我认为,比较应该改为

if [ $backup_count -gt $MAX_backups ]

编辑:当然!我错过了文件重定向,这就是创建文件的原因。