大文字・小文字にはまった
PowerShell が大文字・小文字を区別しない、ってのは知ってたんだけど、まさか連想配列のキーでも考慮されない*1とは・・・
PS > $map = @{ 'a'='aaa'; 'A'='AAA'; } キー 'A' の重複は、ハッシュ リテラルでは許可されていません。 発生場所 行:1 文字:15 + @{ 'a'='aaa'; ' <<<< A'='AAA'; }
で、スクリプトブロック内で -ceq 使って回避したんだけど、なんか他に方法はないものか。
$map = @{ 'a'={ if ($args[0] -ceq 'a') { 'aaa' } else { 'AAA' } }; } $r = $map[$ch] if ($r) { &$r $ch }
*1:よく考えれば当たり前のこと