whileループのサンプル †シェルスクリプトのwhileループのサンプルを以下に記します。 サンプル例としては、無限ループ、ある値までの条件ループについて記述します。 尚、利用したシェルはbashになります。 関連記事 †whileで無限ループ †whileで無限ループを実現するには、:(コロン)または、trueを条件として記述します。
条件として:(コロン)とtrueを利用しています。 whileの条件ループ †whileの条件ループについて以下に記します。 while条件ループ - 数値比較編 †下表に記す文字列により、数値比較ができます。
-eq のサンプルスクリプト (数値 = 数値) †以下のサンプルスクリプトは、変数$iが0の時にwhileループ内を実行します。 #!/bin/bash # -eq : equal i=0 j=0 while [ $i -eq 0 ] do j=`expr $j + 1` if [ $j -eq 5 ]; then i=`expr $i + 1` fi echo "(-eq : equal) i=$i, j=$j" done
-ne のサンプルスクリプト (数値 ≠ 数値) †以下のサンプルスクリプトは、変数$iが5以外の時にwhileループ内を実行します。 #!/bin/bash # -ne : not equal i=0 while [ $i -ne 5 ] do i=`expr 1 + $i` echo "(-ne : not equal) i=$i" done
-lt のサンプルスクリプト (数値 < 数値) †以下のサンプルスクリプトは、変数$iが5未満の時にwhileループ内を実行します。 #!/bin/bash # -lt : less than i=0 while [ $i -lt 5 ] # $i < 5 do echo "(-lt : less than) : $i" i=`expr $i + 1` done
-le のサンプルスクリプト (数値 ≦ 数値) †以下のサンプルスクリプトは、変数$iが5未満の時にwhileループ内を実行します。 #!/bin/bash # -le : less than or equal i=0 while [ $i -le 5 ] # $i <= 5 do echo "(-le : less than or equal) : $i" i=`expr $i + 1` done
-gt のサンプルスクリプト (数値 > 数値) †以下のサンプルスクリプトは、変数$iに10を初期値として代入し、$iが5より大きい値の時にwhileループ内を実行します。 #!/bin/bash # -gt : greater than i=10 while [ $i -gt 5 ] # $i > 5 do echo "(-gt : greater than) : $i" i=`expr $i - 1` done
-ge のサンプルスクリプト (数値 ≧ 数値) †以下のサンプルスクリプトは、変数$iに10を初期値として代入し、$iが5以上の時にwhileループ内を実行します。 #!/bin/bash # -ge : greater than or equal i=10 while [ $i -ge 5 ] # $i >= 5 do echo "(-gt : greater than) : $i" i=`expr $i - 1` done
while条件ループ - 文字列比較編 †以下に文字列比較によるwhileループのサンプルを記述します。 文字列による比較 (not equal) †変数$sが='aaaaa'になるまでwhileループ内を実行します。 #!/bin/bash s='a' while [ $s != 'aaaaa' ] do echo "str.sh s=$s" s="${s}a" done
文字列による比較 (equal) †$ cat ./str-eq.sh #!/bin/bash s='a' while [ $s = 'a' ] do echo "str.sh s=$s" s="${s}a" done
文字列長さの比較 †下表に記す文字列により、文字列長の確認ができます。
-z のサンプルスクリプト †変数$sが空の間、whileループ内を処理します。 #!/bin/bash s='' while [ -z "$s" ] do echo "s : $s" s=${s}a done
-n のサンプルスクリプト †変数$sを1文字ずつcutコマンドで削除しが変数$sが空になるまで、whileループ内を処理します。 #!/bin/bash s="linux" len=`expr length $s` while [ -n "$s" ] do echo "s : $s" if [ $len -ne 0 ]; then s=`echo $s | cut -c 1-$len` len=`expr $len - 1` else s='' fi done
複数の条件式にする場合 †下表に記す文字列により、複数の条件式を記述することができます。
-a のサンプルスクリプト (and) †以下のサンプルスクリプトは以下の条件式が成立する間、whileループ内を処理します。 $a < 5 and $b < 10 #!/bin/bash a=0 b=1 while [ $a -lt 5 -a $b -lt 10 ] # $a < 5 and $b < 10 do echo "a=$a, b=$b" a=`expr $a + 1` b=`expr $b + 1` done
-o のサンプルスクリプト (or) †以下のサンプルスクリプトは以下の条件式が成立する間、whileループ内を処理します。 $a < 5 or $b < 10 #!/bin/bash a=0 b=1 while [ $a -lt 5 -o $b -lt 10 ] # $a < 5 or $b < 10 do echo "a=$a, b=$b" a=`expr $a + 1` b=`expr $b + 1` done
|