Powershellでのfor文の使い方を解説していきたいと思います。
if文に続く代表的な処理なので、しっかり身に着けておきましょう。
※このページに掲載されいているプログラムは、
PowerShellのバージョン:5.1.19041.3693 にて動作確認済みです。
forの構文
forの基本構文
1 2 3 |
for (初期値設定式; ループ条件式; ループ更新式){ 処理 } |
メモ
- 初期値設定式:ループ時に値が変化する変数の初期値を設定。
- ループ条件式:ループを繰り返すかどうかの条件を指定。
この条件から外れると、ループが終了。 - ループ更新式:値が変化する変数をどう更新するか指定。
インクリメント(++)やデクリメント(--)を使うのが一般的。
forの使用例
0~5までループする例です。表示しているのはループ時に値が変化する変数です。
1 2 3 4 |
# C:\Sample1.ps1 for ($i=0; $i -le 5; $i++){ Write-Output ("変数の値:"+$i) } |
実行結果
1 2 3 4 5 6 7 |
PS C:> ./Sample1.ps1 変数の値:0 変数の値:1 変数の値:2 変数の値:3 変数の値:4 変数の値:5 |
メモ
- $i:ループ時に値が変化する変数
- $i -le 5:$iが5以下ならば、ループを回し続ける
- $i++:ループするごとに$iの数値を1つずつ増やす
- {}の中:ループするごとにやりたい処理を記載。
-leを見て、「何でこんな書き方するの?」と思った方は、以下をご覧ください。
-
【Powershell】if文の使い方や使用例を分かりやすく解説
目次ifの構文elseif、elseの構文比較演算子比較演算子の使用例like、matchの使用例論理演算子論理演算子を利用した条件分岐の使用例まとめ Powershellのif文の書き方を解説してい ...
続きを見る
forで配列処理
forを使用すると配列のすべての要素を抜き出すことができます。
forで配列処理の使用例
1 2 3 4 5 6 7 8 |
# C:\Sample2.ps1 #要素が5個の配列 $Gokyouka = @("国語","算数","英語","理科","社会") #$Gokyoukaの要素を1つずつ表示する for($i=0; $i -lt $Gokyouka.length; $i++){ Write-Host('$iの値:' + $i + '、教科:' + $Gokyouka[$i]) } |
実行結果
1 2 3 4 5 6 |
PS C:> ./Sample2.ps1 $iの値:0、教科:国語 $iの値:1、教科:算数 $iの値:2、教科:英語 $iの値:3、教科:理科 $iの値:4、教科:社会 |
foreachで配列処理
連想配列やリストなどの各要素に対して処理をしたい場合はforeach文が有効です。
foreachで配列処理の使用例
1 2 3 4 5 6 7 8 |
# C:\Sample3.ps1 #要素が5個の配列 $Gokyouka = @("国語","算数","英語","理科","社会") #$kamokuの要素を1つずつ表示する foreach($Kyouka in $Gokyouka){ Write-Host($Kyouka) } |
実行結果
1 2 3 4 5 6 |
PS C:> ./Sample3.ps1 国語 算数 英語 理科 社会 |
for文と比べるとかなりすっきりとした構文ですが、
逆に言えば必ず配列の各要素を取り出す点は変更できません。
カスタマイズする場合はforeach文の{}内にif文を入れて条件分けする必要があります。
continue文、break文の使い方
ループ処理の途中でループを制御することができます。
continue文、break文
continue:ループ途中で以降の処理をスキップして次のループに移る。
break:ループ途中で処理を中断し、ループを抜ける。
continue文の基本構文
1 2 3 4 5 6 7 |
for (式) { if (条件式) { continue # この行はcontinueでスキップされるので、処理されない } # この行は処理される } |
メモ
- continue直下の処理は動作しない。
- continueは基本的にif文の中に記載し、特定の条件下で実行させる。
continue文の使用例
1 2 3 4 5 6 7 8 9 |
# C:\Sample4.ps1 for ($i=1;$i -le 5; $i++) { #$iが2で割り切れる場合 if ($i % 2 -eq 0) { continue; echo("ここは処理されません。") } echo('$iの値:' + $i) } |
実行結果
1 2 3 4 |
PS C:> ./Sample4.ps1 $iの値:1 $iの値:3 $iの値:5 |
break文の基本構文
1 2 3 4 5 6 7 |
for (式) { if (条件式) { break # この行はbreakでスキップされるので、処理されない } # この行はbreakに行くまでは処理される } |
メモ
- break直下の処理は動作しない。
- breakは一度到達すると、ループを抜けるのでそれ以降の処理を実施しない。
breakの使用例
1 2 3 4 5 6 7 8 9 |
# C:\Sample5.ps1 for ($i=1;$i -le 5; $i++) { #$iが2で割り切れる場合 if ($i % 2 -eq 0) { break echo("ここは処理されません。") } echo('$iの値:' + $i) } |
実行結果
1 2 |
PS C:> ./Sample5.ps1 $iの値:1 |
2重for文・2重ループの使い方
for文の中にもう一つfor文を入れることができる。
2重for文・2重ループの使用例
1 2 3 4 5 6 |
# C:\Sample6.ps1 for ($i = 0; $i -lt 3; $i++) { for ($j = 0; $j -lt 3; $j++) { Write-Host ("i=" + $i + " j=" + $j) } } |
実行結果
1 2 3 4 5 6 7 8 9 10 |
PS C:> ./Sample6.ps1 i=0 j=0 i=0 j=1 i=0 j=2 i=1 j=0 i=1 j=1 i=1 j=2 i=2 j=0 i=2 j=1 i=2 j=2 |
メモ
- 基本的に外側のループ内変数は$i、内側は$jを使用する。
- 中のループが先に処理されて、あとから外のループが処理される。
- 中のループを抜けると、ループ内変数($j)は初期化される。
2重for文・2重ループのbreak文、continue文の使い方
break文、continue文はそれぞれ対応したfor文に対して動作します。
2重ループの内側にbreak文、continue文があっても、外側のループには影響しません。
2重for文・2重ループのbreak文、continue文の使用例
1 2 3 4 5 6 7 8 9 10 11 12 |
# C:\Sample7.ps1 for ($i = 0; $i -lt 3; $i++) { for ($j = 0; $j -lt 3; $j++) { if($j -eq 0){ continue #$jが0の場合、処理せず内側ループを続ける } Write-Host ("i=" + $i + " j=" + $j) } if($i -eq 2){ break #i$が2の場合、外側のループを抜ける } } |
実行結果
1 2 3 4 5 6 7 |
PS C:> ./Sample7.ps1 i=0 j=1 i=0 j=2 i=1 j=1 i=1 j=2 i=2 j=1 i=2 j=2 |
for文を使った無限ループ
for文を使った無限ループの構文です。
1 2 3 |
for(;;) { 処理 } |
メモ
- 無限ループになると、処理が永遠と続く。
- 停止する場合は、Ctrl + C を押す必要があります。
- 無限ループ内でもif文やbreak文などを駆使すれば、ループを抜けることができます。
まとめ
if文に続いて、for文もプログラムを組むのに必須の構文になります。
ここでfor文をマスターして、自分の作りたいプログラムが書けるように一緒に頑張りましょう。
独学で勉強しているあなたは素晴らしいです。
プログラミング知識を身に着けたい人におすすめの無料スクールはこちら。