powershell 入門 条件 IF

今回はpowershellで条件分岐を使用する方法をご紹介します。

条件分岐の種類

以下表を参照下さい。

No.演算子説明
1-eq等しい
2-ne等しくない
3-gtより大きい
4-ge以上
5-ltより小さい
6-le以下
7-likeワイルドカードによる比較
8-notlikeワイルドカードによる比較
9-match正規表現による比較
10-notmatch正規表現による比較

ワイルドカードパターン

No.ワイルドカード説明
1*0個以上の任意の文字に一致
2?任意の1文字に一致
3[a-z]連続する文字に一致(左の例の場合はa-zの中の1文字)
4[abc]abcのうち1文字に一致

それでは使用方法です。

構文

if文書き方 if ~ elseif ~ else

eqを使用した単一比較の場合

$x = 555
if($x -eq 555){
  Write-Output '正しいです。'
}else{
  Write-Output '正しくありまえん。'
}

■実行結果
powershell9

$x = 555
if($x -eq 556){
  Write-Output '正しいです。'
}else{
  Write-Output '正しくありません。'
}

■実行結果
powershell10

elseifブロックを使って多岐分岐

$x = 555
if($x -eq 555){
  Write-Output '変数は555です。'
}elseif($x -ge 556){
  Write-Output '変数は556以上です。'
}else{
  Write-Output '変数は554以下です。'
}

文字列の比較の場合

$b = "hoge"
if($b -eq "hoge"){
  Write-Output '正しい'
}else{
  Write-Output '正しくない'
}

ワイルドカードを用いた比較

$c = "hoge123"
if($c -like "hoge*"){
  Write-Output '正しい'
}else{
  Write-Output '正しくない'
}

■実行結果
powershell11

matchを用いた比較 簡単な例

右の文字列が左の文字列に含まれる場合、True

#結果TRUEとなる
if("hogawa" -match "ogawa"){
  Write-Output '正しい'
}else{
  Write-Output '正しくない'
}
#結果TRUEとならない
if("hogawa" -match "ogawn"){
  Write-Output '正しい'
}else{
  Write-Output '正しくない'
}

matchを用いた比較 正規表現

文字のグループや範囲を角かっこで囲んで含めることもできます。
たとえば、[abo] は、角かっこの中に含まれているいずれかの文字 (a、b、oのいずれか) に一致することを
意味します。

#結果TRUEとなる
if("hogawa" -match "h[abo]gawa"){
  Write-Output '正しい'
}else{
  Write-Output '正しくない'
}
#結果TRUEとならない
if("hogawa" -match "h[123]gawa"){
  Write-Output '正しい'
}else{
  Write-Output '正しくない'
}

[a-zA-Z] は、a~zまたはA~Zの任意の文字に一致するとTRUEとなります。

#結果TRUEとなる
if("hogawa" -match "h[a-z]gawa"){
  Write-Output '正しい'
}else{
  Write-Output '正しくない'
}
if("h0gawa" -match "h[0-9]gawa"){
  Write-Output '正しい'
}else{
  Write-Output '正しくない'
}
#結果TRUEとならない
if("hogawa" -match "h[1-9]gawa"){
  Write-Output '正しい'
}else{
  Write-Output '正しくない'
}

powershell記事一覧


Bookmark this on Yahoo Bookmark
Bookmark this on Google Bookmarks
Share on LinkedIn
LINEで送る
Pocket