我正在尝试编写一个bash脚本,在我的实时站点的数据库上执行mysqldump,然后添加并将转储提交到git存储库。这是我到目前为止(存储在由crontab条目调用的.sh文件中):
/usr/bin/mysqldump --skip-comments --skip-dump-date -u [user] -p[pass] database | gzip > /var/www/site/backup/database.sql.gz
cd var/www/site/backup && git add *
cd var/www/site/backup && git commit -m 'Database $(date +%a %H:%M %h %d %Y)'
我的crontab条目如下所示:
0,20,40 8-22 * * * /var/www/site/backup/script.sh
我可以看到这个脚本会转储数据库,但不会将文件添加或提交给git。有什么东西我错过了吗?
编辑=================================
我做了以下更改,提交工作正在进行:
cd /var/www/site/backup && /usr/bin/git add *
cd /var/www/site/backup && /usr/bin/git commit -m 'Database $(date +%a %H:%M %h %d %Y)'
但是,日期不会计算。
编辑=================================
最新修订,包括(大部分)建议
/usr/bin/mysqldump --skip-comments --skip-dump-date -u [user] -p[pass] database > /var/www/site/backup/database.sql
cd var/www/site/backup
/usr/bin/git add *
/usr/bin/git commit -m "Internal Forms Live Database Dump Stored $(date '+%a %H:%M %h %d %Y')"
答案 0 :(得分:33)
$(...)
和other forms of substitutions are not interpolated in single-quoted strings。
因此,如果您想要计算日期,请执行
git commit -m "Database $(date '+%a %M:%H %h %d %Y')"
也就是说,整个消息字符串是双引号以允许插入$(...)
,而date
的参数是单引号,以使其成为单个参数(传递给date
})。