6618


シェルスクリプトで指定回数ループ処理するにはどういった書き方があるでしょうか


CC BY-SA 3.0
2015-02-17T02:01:36.193
6606
2015-02-21T06:32:55.927
525
question
sh
シェルスクリプトで指定回数ループ処理


例えばseqコマンドを使うとこうなるかと思います

[code]

    for i in `seq 1000`
    do
    /* 処理 */
    done
    
[/code]


CC BY-SA 3.0
2015-02-17T02:02:46.533
6607
2015-02-17T02:02:46.533
525
6606
answer


例えばこうとかどうでしょう。 while の場合です。

[code]

    a=0
    while [ $a -ne 10 ]
    do
    　　a=`expr $a + 1`
    　　echo "${a}" # 1-10 まで表示されます
    done
    
[/code]


CC BY-SA 3.0
2015-02-17T02:04:38.403
6608
2015-02-17T02:04:38.403
7926
6606
answer


### for / `seq # #`:

[code]

    for i in `seq 0 9`
    do
      echo "i = $i";
    done
    
[/code]

### for / C-style ( POSIX 標準外):

[code]

    declare -i i
    for (( i = 0 ; i < 10 ; i++ ))
    do
      echo "i = $i";
    done
    
[/code]

[code]

    for (( i = 0 ; i < 10 ; i++ )) {
      echo "i = $i";
    }
    
[/code]

### for / {#..#} ( _>= bash-3.0_ ):

[code]

    for i in {0..9}
    do
      echo "i = $i";
    done
    
[/code]

### while / -lt ~ $(())

[code]

    declare -i i=0
    while [[ $i -lt 10 ]]
    do
      echo "i = $i"
      i=$((i+1))
    done
    
[/code]

* * *

_Output_ :

[code]

    i = 0
    i = 1
    i = 2
    i = 3
    i = 4
    i = 5
    i = 6
    i = 7
    i = 8
    i = 9
    
[/code]

  * Bash Reference Manual, [Looping-Constructs](http://www.gnu.org/software/bash/manual/bashref.html#Looping-Constructs)


CC BY-SA 3.0
2015-02-17T04:57:01.740
6618
2015-02-17T05:24:04.140
2015-02-17T05:24:04.140
4978
4978
6606
answer


こんな感じはいかがでしょうか。

[code]

    loop=10;#繰り返し回数
    i=0;
    
    while true
    do
    /* 処理 */;
    i=`expr $i + 1`
    if `expr $i \>= $loop`
    then
    break;
    fi
    done
    
[/code]


CC BY-SA 3.0
2015-02-17T05:00:40.787
6619
2015-02-17T05:00:40.787
7590
6606
answer