我正在创建一个简单的脚本来帮助我的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
答案 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 ]
编辑:当然!我错过了文件重定向,这就是创建文件的原因。