PowerShell 条件、ループ関連
PowerShellの条件、ループ関連をまとめます。 ■サンプル:IF文
$aaa = 1
if($aaa -eq 0){
echo "zero"
}elseif($aaa -eq 1){
echo "one"
}else{
echo "etc"
}
演算子 | 概要 |
---|---|
-eq | 等しい(==)。大文字、小文字を意識しない 意識する場合は-ceqとする |
-ne | 等しくない(!=) |
-gt | より大きい(>) |
-ge | 以上(>=) |
-lt | 未満(<) |
-le | 以下(<=) |
-like | あいまい検索 ワイルドカード:* 一文字:? 否定の場合は -notlike とする |
-match | 正規表現 否定の場合は -notmatch とする |
$aaa = -2
if (($aaa -gt -1) -and ($aaa -lt 1 )) {
Write-Output "zero"
}
elseif (($aaa -eq -1) -or ($aaa -eq -2)) {
Write-Output "minus"
}
elseif (-not ($aaa -eq 1)) {
Write-Output "etc"
}
else {
Write-Output "one"
}
演算子 | 概要 |
---|---|
-and | AND条件 |
-or | OR条件 |
-xor | 排他条件 |
-not | 否定条件 |
■サンプル:switch文
$aaa = 1
switch ( $aaa )
{
0{
echo "zero"
}
1{
echo "one"
}
default{
echo "etc"
}
}
文字列でもいけます。大文字、小文字は意識されないので意識させる場合、-cをつけます
switch -c ( $aaa )
■サンプル:for文
for ( $i = 0; $i -lt 3; $i++ )
{
echo('$i:' + $i)
}
■サンプル:while文
$i = 0
while ($i -lt 3)
{
echo('$i:' + $i)
$i++
}
■サンプル:do-while文
$i = 0
do
{
echo('$i:' + $i)
$i++
}
while ($i -lt 3)
■サンプル:foreach文
$aaa = "1,2,3"
$bbb = $aaa.Split(",")
foreach ($ccc in $bbb)
{
Write-Output ('$ccc:' + $ccc)
}
foreach ($ccc in 1..3)
{
Write-Output ('$ccc:' + $ccc)
}
Splitは文字を配列にするメソッドです。ここでは文字列をカンマで区切って配列にしています。
..(ドットドット)は連続した数字の配列を作成してくれます。
■サンプル:continue文、break文
$aaa = "1,2,3,4,5"
$bbb = $aaa.Split(",")
foreach ($ccc in $bbb)
{
if($ccc -eq "1"){
continue
}
if($ccc -eq "3"){
break
}
echo ('$ccc:' + $ccc)
}
# $ccc:2のみ出力される
■サンプル:ForEach-Object
$aaa = "1,2,3,4,5"
$bbb = $aaa.Split(",")
$bbb | ForEach-Object {
# ForEach-Objectの省略形として % がある(同じ動きをする)
# $bbb | % {
# foreachも同様
# $bbb | foreach {
# $_で値を受け取る
$ccc = $_
if($ccc -eq "1"){
# ForEach-Objectではcontinueを使えない
return
}
if($ccc -eq "3"){
break
}
echo ('$ccc:' + $ccc)
}
# $ccc:2のみ出力される
foreachとの違いは、ForEach-Objectは1行毎に処理するが、foreachは一気に処理を行う。
■サンプル:Where-Object(条件フィルター)
$aaa = "1,2,3,4,5"
$bbb = $aaa.Split(",") | Where-Object { $_ % 2 -eq 1 }
# $_で値を受け取る
# Where-Objectの省略形として ? がある(同じ動きをする)
# $bbb = $aaa.Split(",") | ?{$_ % 2 -eq 1}
# whereも同様
# $bbb = $aaa.Split(",") | where{$_ % 2 -eq 1}
$bbb | ForEach-Object {
$ccc = $_
echo ('$ccc:' + $ccc)
}
# ForEach-Objectの省略形として % がある(同じ動きをする)
# 以下が出力
# $ccc:1
# $ccc:3
# $ccc:5
$aaa = "abc,def"
$bbb = $aaa.Split(",") | ? { $_ -like '*b*' }
# $_で値を受け取る
# Where-Objectの省略形として ? がある(同じ動きをする)
# -likeであいまい検索。アスタリスクを付ける
$bbb | % {
$ccc = $_
echo ('$ccc:' + $ccc)
}
# ForEach-Objectの省略形として % がある(同じ動きをする)
# 以下が出力
# $ccc:abc
ページのトップへ戻る