Bashでは、次のようなことが簡単にできます
command1 && command2 || command3
これは、command1 を実行し、command1 が command2 の実行に成功し、command1 が command3 の実行に失敗した場合を意味します。
PowerShell で同等のものは何ですか?
Bashでは、次のようなことが簡単にできます
command1 && command2 || command3
これは、command1 を実行し、command1 が command2 の実行に成功し、command1 が command3 の実行に失敗した場合を意味します。
PowerShell で同等のものは何ですか?
Bash がしなければならないことは、論理演算子に渡されるときに、コマンドの終了コードをブール値に暗黙的にキャストすることです。PowerShell はこれを行いませんが、コマンドをラップして同じ動作を作成する関数を作成できます。
> function Get-ExitBoolean($cmd) { & $cmd | Out-Null; $? }
( $? は、最後の終了コードの成功を含む bool です)
2 つのバッチ ファイルがあるとします。
#pass.cmd
exit
と
#fail.cmd
exit /b 200
...動作をテストできます:
> if (Get-ExitBoolean .\pass.cmd) { write pass } else { write fail }
pass
> if (Get-ExitBoolean .\fail.cmd) { write pass } else { write fail }
fail
論理演算子は、Bash と同じ方法で評価する必要があります。まず、エイリアスを設定します。
> Set-Alias geb Get-ExitBoolean
テスト:
> (geb .\pass.cmd) -and (geb .\fail.cmd)
False
> (geb .\fail.cmd) -and (geb .\pass.cmd)
False
> (geb .\pass.cmd) -and (geb .\pass.cmd)
True
> (geb .\pass.cmd) -or (geb .\fail.cmd)
True