git commit
のエイリアスを作成しようとしており、メッセージも別のテキストファイルに記録されます。ただし、git commit
が"nothing to commit (working directory clean)"
を返す場合は、別のファイルには何も記録しないでください。PowerShell関数で文字列比較が機能しません - 何が間違っていますか?
ここに私のコードです。 git commit
エイリアスは機能します。ファイルへの出力が機能します。ただし、返されたメッセージがgit commit
に関係なくログに記録されます。
function git-commit-and-log($msg)
{
$q = git commit -a -m $msg
$q
if ($q –notcontains "nothing to commit") {
$msg | Out-File w:\log.txt -Append
}
}
Set-Alias -Name gcomm -Value git-commit-and-log
私は-notcontainsオペレータは意味しないことのPowerShell 3.
"$ qには、gitのstdoutの各行の文字列配列が含まれています。" gitが2行以上の出力を生成する場合のみ。 gitがstdoutに1行しか出力しない場合、$ qは配列ではなく1つの文字列を含みます。 –
OPからの複数の行がgit commit commit(私のマシンで試してみました)から返されます。 –
私はそのツールを使用しないので、私はそれについてコメントすることはできません。しかし、この特定の答えは、コマンドラインツールの出力をキャプチャするすべてのケースに一般化することはできません。 –