0

如何使我的backup_filename函数根据传入的日期参数返回一个字符串(文件名)?

#!/bin/bash
DBNAME="user_db"
FILENAME="${DBNAME}_%Y_%m_%d.pg"

backup_filename() {
    echo `$1 +"$FILENAME"`
}

BACKUP_FILENAME=$(backup_filename `date -d '2 days'`)
echo $BACKUP_FILENAME

这会打印出错误line 6: Sun: command not found。我尝试了不同的报价策略,$FILENAME但运气不佳。

4

3 回答 3

2

试试这个,它应该让你非常接近你想要的:

#!/bin/bash
DBNAME="user_db"
FILENAME="${DBNAME}"

backup_filename() {
    BACKUP_FILENAME="${FILENAME}_${1}"
}

backup_filename `date -d '2 days' +%Y_%m_%d`
echo $BACKUP_FILENAME
于 2013-07-19T15:50:22.993 回答
0

你可以试试这个脚本。它可以正常工作,您可以根据需要更改格式。对于更可定制的功能,您可以将日期格式和文件名前缀作为参数传递:

#!/bin/bash
DBNAME="user_db"
FILENAME="${DBNAME}"
DATE_FORMAT="+%Y_%m_%d"

backup_filename() {
    BACKUP_FILENAME="${1}_"$(date -d "${2}" ${3})
}

backup_filename "$FILENAME" "2 days" "$DATE_FORMAT"
echo $BACKUP_FILENAME
于 2013-07-19T16:02:21.490 回答
0

根据 Dave S. 的回答,我最终这样做了。

#!/bin/bash
DBNAME="user_db"
FILENAME="${DBNAME}_%Y_%m_%d.pg"

backup_filename() {
    echo $(date -d "${1} days" +"${FILENAME}")
}

BACKUP_FILENAME=$(backup_filename 2)
echo $BACKUP_FILENAME
于 2013-07-19T16:27:04.310 回答