Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Bash中,如何在字符串中插入$(…)?_Bash_Shell_String Interpolation - Fatal编程技术网

在Bash中,如何在字符串中插入$(…)?

在Bash中,如何在字符串中插入$(…)?,bash,shell,string-interpolation,Bash,Shell,String Interpolation,我试图编写一个Bash脚本,在我的实时站点的数据库上执行mysqldump,然后将转储添加并提交到Git存储库。以下是我到目前为止所做的(存储在一个.sh文件中,该文件由一个条目调用): 我的crontab条目如下所示: 0,20,40 8-22 * * * /var/www/site/backup/script.sh 我可以看到这个脚本确实会转储数据库,但不会将文件添加或提交到Git。有什么我遗漏的吗 后来我做了以下更改,提交工作正常: cd /var/www/site/backup &a

我试图编写一个Bash脚本,在我的实时站点的数据库上执行mysqldump,然后将转储添加并提交到Git存储库。以下是我到目前为止所做的(存储在一个.sh文件中,该文件由一个条目调用):

我的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')"
$(…)

所以,如果你想计算你的约会,那就做吧

git commit -m "Database $(date '+%a %M:%H %h %d %Y')"

也就是说,整个消息字符串被双引号引起来,以允许插入
$(…)
,而
date
的参数用单引号引起来,使其成为单个参数(传递到
date
)。

您是否已经用
git status
检查了git存储库的状态?是,这就是我知道提交没有发生的原因。在添加之前压缩转储使git无法只存储差异数据,git将自行处理压缩数据的工作。要么不压缩,要么改用git附件。好的,我会拿出gzip命令。我同意Elias所说的。还要确保在
mysqldump
命令中添加
--跳过注释--skip dump date
,以使Git的xdelta压缩器的工作更加容易。我将&a更改为%a
git commit -m "Database $(date '+%a %M:%H %h %d %Y')"