'git describe' の出力で変数を初期化すると奇妙な結果になる

'git describe' の出力で変数を初期化すると奇妙な結果になる

何らかの理由で、この割り当ては次のOUT=$(git describe HEAD)ように標準出力に出力されます (例):fatal: No names found, cannot describe anything.

これは正常な動作ですか? 他のコマンドではなぜこのようなことが起きないのでしょうか?

答え1

これは実際にはstderr出力であり、 ではありませんstdout。対話型端末からコマンドを実行する場合、 との両方stdoutstderr端末に送信されるよう設​​定されます。

stderr変数に出力が必要な場合(おそらく必要ないでしょうが、とにかく)、stdout次のようにリダイレクトします。

OUT=$(git describe HEAD 2>&1)

または、スクリプトを実行している人にその出力を見せたくない場合はstderr、次のようにして出力を削除します。

OUT=$(git describe HEAD 2>/dev/null)

関連情報