我每天都会从数据库生成一个报告,它基本上是使用DB2导出的数据提取。
我使用的文件格式是 Report_DDMMYYY.csv
现在问题是我需要在每天在同一天运行时为报告添加版本号。
例如 - Report_24112014_001.csv || Report_24112014_002.csv
因此,对于运行脚本的每一天,版本都会不断更新。
我知道如何使用Shell Scripting实现这一目标吗?
答案 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日期格式,因为我同意几位评论者的说法,在大多数情况下,机器可读,可排序的文件格式是可行的。