次のコマンドを使用する場合:
git log --pretty=format:"%ad %s%d"
出力は次のとおりです
2016年4月26日火曜日11:29:24 +0000設定更新
次のようにすると:
SIMPLE='--pretty=format:"%ad %s%d"'
git log $SIMPLE
その後、出力は次のようになります。
「構成更新2016年4月26日火曜日11:29:24 +0000」
私は私が定義できることを知っていますalias gitl='git log --pretty=format:"%ad %s%d"'
。しかし、gitがなぜこれをするのかわかりません。
変数置換メソッドを使用すると、出力が引用符で表示されるのはなぜですか?
答え1
違いは、一部のシェル引用属性によるものです。
これらのいずれかを実行する場合(シェルで引用するのと同じ方法です)
git log --pretty=format:'%ad %s%d'
git log '--pretty=format:%ad %s%d'
git log --pretty=format:%ad\ %s%d
git log --pretty=form'at:%ad %'s%d
git log --pretty=format:%ad" "%s%d
git log --pretty=format:"%ad %s%d"
git
2つのパラメータが得られます。最初のものは、log
2番目はです--pretty=format:%ad %s%d
。
実行すると
SIMPLE='--pretty=format:"%ad %s%d"'
変数SIMPLE
の値は--pretty=format:"%ad %s%d"
、含む二重引用符。
今私たちがzshにいて、あなたが実行しているなら
git log $SIMPLE
またはバッシュから
git log "$SIMPLE"
git
2番目のパラメータをとして扱います--pretty=format:"%ad %s%d"
。 (Bashで実行すると、、、および3つのパラメータを使用するため、git log $SIMPLE
エラーが発生します。)git
log
--pretty=format:"%ad
%s%d"
したがって、変数の内部には内部引用符は必要ありません(に渡したい場合を除くeval
)。