Reputation: 8348
How can I make my backup_filename
function return a string (a filename) based on a passed-in date parameter?
#!/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
This prints out the error line 6: Sun: command not found
. I've tried different quoting strategies of $FILENAME
but haven't had much luck.
Upvotes: 0
Views: 1126
Reputation: 8348
Based on Dave S. answer I ended up doing this.
#!/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
Upvotes: 0
Reputation: 4974
You can try this script. It would work fine, you can change the format if you want. For a more customizable function, you pass the date format and the filename prefix as parameters:
#!/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
Upvotes: 0
Reputation: 6419
Try this, it should get you pretty close to what you want:
#!/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
Upvotes: 2