1

cron ジョブとして実行するシェル スクリプトを設定しています。このスクリプトは、定期的に更新されるコンテンツをリモート リポジトリにコミットしてプッシュします。この場合、コミット メッセージに日付と時刻を含めることは、ターゲット ユーザーにとって十分な情報です。

問題のスクリプトは次のとおりです。

#!/bin/sh

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

このスクリプトは機能しますが、問題が 1 つあります。コミット メッセージAdded notes for $(date)には、コミットの日付と時刻が含まれる代わりに、文字どおりすべて「 ,」と表示されます。

4

1 に答える 1

4

代わりに二重引用符を使用してください。

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

With single quotes$(date)は展開されず、リテラル形式を保持します。

ここで述べたように:

文字を二重引用符 ('"') で囲むと、引用符内のすべての文字のリテラル値が保持されます。 . 文字 '$' および '</code>' は、二重引用符内で特別な意味を持ちます (シェル展開を参照してください). バックスラッシュは、次の文字のいずれかが続く場合にのみ、その特別な意味を保持します: '$', '`', '"'、'\'、または改行。二重引用符内で、これらの文字のいずれかが続くバックスラッシュは削除されます。特別な意味を持たない文字の前のバックスラッシュは変更されません。二重引用符は、その前にバックスラッシュを付けることにより、二重引用符内で引用できます。有効にすると、「!」が指定されていない限り、履歴拡張が実行されます。二重引用符で囲まれたものは、バックスラッシュを使用してエスケープされます。「!」の前のバックスラッシュ 削除されません。

特別なパラメータ '*' と '@' は、二重引用符で囲まれている場合に特別な意味を持ちます (シェル パラメータの展開を参照してください)。

于 2013-09-23T03:17:28.383 に答える