如何让我的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
的不同引用策略,但没有太多运气。
答案 0 :(得分: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
答案 1 :(得分: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
答案 2 :(得分: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