下準備中、「全く知らなかった」事の一つに「頭にcが付く演算子」がありました。
今回は、大文字・小文字の文字列を明示的に比較するPowerShell の演算子をメモ。
比較演算子
PowerShellには様々な演算子があります。
知っているだけでも
比較演算子とは、下記式の-eqを指示し、左辺と右辺の数値が等値かを比較します。
C#等で使う==(等値演算子)と同じですね。
知っているだけでも
- 比較演算子
- 文字列演算子
- 特殊演算子
- 代入演算子
- 単項演算子
- 論理演算子
があり、その中でよく使われるのが比較演算子ではないでしょうか。
比較演算子とは、下記式の-eqを指示し、左辺と右辺の数値が等値かを比較します。
C#等で使う==(等値演算子)と同じですね。
100 -eq 200-eq以外によく使われる比較演算子は下記の通りです。
演算子 | 意味 |
-eq | 等しい |
-ne | 等しくない |
-gt | より大きい(右辺の数字を含まない) |
-ge | 以上(右辺の数字を含む) |
-lt | より小さい(右辺の数字を含まない) |
-le | 以下(右辺の数字を含む) |
大文字・小文字を明示的に比較したい
もし、文字列の大文字・小文字を明示的に比較したい時はどうするのか?
その場合は、頭に[c]が付いた比較演算子を使用します。
その場合は、頭に[c]が付いた比較演算子を使用します。
$com1 = "IRON MAIDEN" #大文字 $com2 = "iron maiden" #小文字 #大文字・小文字を比較しないため、結果はTrue $com1 -eq $com2 #True #大文字・小文字を明示的に比較するので、結果はFalse $com1 -ceq $com2 #Falseまた、全角文字でも比較できます。
$a = "A" $b = "a" $a -eq $b #True $a -ceq $b #False
大文字・小文字を明示的に比較したくない場合は、比較演算子の頭に[i]を付けます。
#大文字・小文字を明示的に比較しない $com1 -ieq $com2
-clike 演算子は実務で使えそう
頭にcが付く演算子は「どのような時に使うか?」、試した限り-clike演算子は実務で使う可能性がありました。
例えば、
テキスト ファイルは、ログ ファイルかもしれませんし、メモ書きかもしれません。
下記は、ブログ記事の文中にキーワード「ESET」が含まれるかを確認するスクリプトです。
テキスト ファイルに記録された文字列の中から特定のキーワードをチェックしたい場合です。
テキスト ファイルは、ログ ファイルかもしれませんし、メモ書きかもしれません。
下記は、ブログ記事の文中にキーワード「ESET」が含まれるかを確認するスクリプトです。
#検索対象の文字列 $s = "ESET Smart Securityのファイアウォールに設定したルールが正しくなかったようで" #キーワード「ESET」が含まれるか確認 $s -clike "*ESET*" #True
余談:cが付く演算子
今回は-eq 演算子と-clike 演算子の説明しましたが、それ以外の演算子でも-cXXXXは存在しいます。
下記はPowerShell v5.0(Windows 10)の候補一覧になりますが、比較演算子以外に文字列演算子でも利用可能でした。
下記はPowerShell v5.0(Windows 10)の候補一覧になりますが、比較演算子以外に文字列演算子でも利用可能でした。
参考にしたいサイト
about_Comparison_Operators - Script Center