Shell脚本:生成报告版本

时间:2014-11-25 07:12:01

标签: linux shell unix aix

我每天都会从数据库生成一个报告,它基本上是使用DB2导出的数据提取。

我使用的文件格式是 Report_DDMMYYY.csv

现在问题是我需要在每天在同一天运行时为报告添加版本号。

例如 - Report_24112014_001.csv || Report_24112014_002.csv

因此,对于运行脚本的每一天,版本都会不断更新。

我知道如何使用Shell Scripting实现这一目标吗?

2 个答案:

答案 0 :(得分:1)

使用2个变量。第一个变量将存储上一个执行日期,下一个变量将存储该版本。无论何时执行脚本,首先要检查日期是否相同。如果是,则增加版本else将版本设置为1.导出变量以保留它们的值。

if [ "`date +'%Y%m%d'`" == "$LAST_EXEC_DATE" ]; then 
  (( VERSION += 1 ))
else
  VERSION=1
  LAST_EXEC_DATE=`date +"%Y%m%d"`

fi
export LAST_EXEC_DATE
export VERSION

答案 1 :(得分:1)

这是一个带循环的简单自包含函数。

newfile () {
    # "local" is not POSIX, is it?
    local date
    local i
    local filename
    date=$(date +%Y%m%d)
    for ((i=1; i<=999; ++i))
        filename=$(printf 'Report_%s_%03i.csv' "$date" "$i")
        test -e "$filename" && continue
        echo "$filename"
        return 0
    done
    return 1
}

循环使用Bash语法,但除此之外,它应该是合理的可移植性。

我使用YYYYMMDD日期格式,因为我同意几位评论者的说法,在大多数情况下,机器可读,可排序的文件格式是可行的。