我正在尝试编写一个 Bash 脚本,在我的实时站点的数据库上执行 mysqldump,然后将转储添加并提交到 Git 存储库。这是我到目前为止所拥有的(存储在 .sh 文件中,该文件由crontab https://en.wikipedia.org/wiki/Cron#Overview entry):
/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')"
$(...)
and 其他形式的替换不会插入单引号字符串中 http://pubs.opengroup.org/onlinepubs/009695399/utilities/xcu_chap02.html#tag_02_02_02.
因此,如果您想计算日期,请执行以下操作
git commit -m "Database $(date '+%a %M:%H %h %d %Y')"
也就是说,整个消息字符串都用双引号引起来$(...)
在参数为时进行插值date
用单引号括起来,使其成为单个参数(传递给date
).
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)