1

我正在设置一个 shell 脚本作为 cron 作业运行,它将提交一些定期更新的内容并将其推送到远程存储库。在这种情况下,在提交消息中包含日期和时间对于目标受众来说是足够的信息。

这是有问题的脚本:

#!/bin/sh

cd /Users/me/Documents/myfile/
git add .
git commit -m 'Added notes for $(date)'
git push -u origin master

该脚本有效,但有一个障碍:提交消息实际上都说“ Added notes for $(date),”,而不是包括提交的日期和时间。

4

1 回答 1

4

改用双引号:

git commit -m "Added notes for $(date)"

用单引号$(date)不展开并保留字面形式。

如此处所述:

将字符括在双引号 ('"') 中会保留引号内所有字符的字面值,但 '$'、'<code>'、'\' 以及启用历史扩展时的'!' 除外. 字符 '$' 和 '</code>' 在双引号内保留其特殊含义(请参阅 Shell 扩展)。反斜杠仅在后跟以下字符之一时才保留其特殊含义:'$'、'`'、 '"'、'\' 或换行符。在双引号内,删除后面跟有这些字符之一的反斜杠。没有特殊含义的字符前面的反斜杠保持不变。双引号可以用反斜杠在双引号中引用。如果启用,将执行历史扩展,除非出现“!” 出现在双引号中的使用反斜杠进行转义。'!' 前面的反斜杠 没有被删除。

特殊参数 '*' 和 '@' 在双引号中具有特殊含义(请参阅 Shell 参数扩展)。

于 2013-09-23T03:17:28.383 回答