程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 更多關於編程 >> Shell中的for循環總結

Shell中的for循環總結

編輯:更多關於編程

       這篇文章主要介紹了Shell中的for循環總結,本文講解了shell中for循環用法、shell下for循環的幾種方法等內容,需要的朋友可以參考下

      關於shell中的for循環用法很多,一直想總結一下,今天網上看到上一篇關於for循環用法的總結,感覺很全面,所以就轉過來研究研究,嘿嘿...

      代碼如下:

      for((i=1;i<=10;i++));do echo $(expr $i * 4);done

      在shell中常用的是 for i in $(seq 10)

       代碼如下:

      for i in `ls`

      for i in ${arr[@]}

      for i in $* ; do

      for File in /proc/sys/net/ipv4/confaccept_redirects:'

      for File in /proc/sys/net/ipv4/conf/*/accept_redirects; do

      echo $File

      done

      echo "直接指定循環內容"

      for i in f1 f2 f3 ;do

      echo $i

      done

      echo

      echo "C 語法for 循環:"

      for (( i=0; i<10; i++)); do

      echo $i

      done

      ---------------------------------------------------------------------------------------------------------

      shell中for循環用法

      shell語法好麻煩的,一個循環都弄了一會 ,找了幾個不同的方法來實現輸出1-100間可以被3整除的數

      1.用(())

       代碼如下:

      #!/bin/bash

      clear

      for((i=1;i<100;i++))

      for

      do

      if((i%3==0))

      then

      echo $i

      continue

      fi

      done

      2.使用`seq 100`

       代碼如下:

      #!/bin/bash

      clear

      for i in `seq 100`

      do

      if((i%3==0))

      then

      echo $i

      continue

      fi

      done

      3.使用while

      代碼如下:

      #!/bin/bash

      clear

      i=1

      while(($i<100))

      do

      if(($i%3==0))

      then

      echo $i

      fi

      i=$(($i+1))

      done

      --------------------------------------------------------------------------------------------------------

      在shell用for循環做數字遞增的時候發現問題,特列出shell下for循環的幾種方法:

      1.

      復制代碼 代碼如下:

      for i in `seq 1 1000000`;do

      echo $i

      done

      用seq 1 10000000做遞增,之前用這種方法的時候沒遇到問題,因為之前的i根本就沒用到百萬(1000000),因為項目需要我這個數字遠大於百萬,發現用seq 數值到 1000000時轉換為1e+06,根本無法作為數字進行其他運算,或者將$i有效、正確的取用,遂求其他方法解決,如下

      2.

      代碼如下:

      for((i=1;i<10000000;i++));do

      echo $i

      done

      3.

      i=1

      while(($i<10000000));do

      echo $i

      i=`expr $i + 1`

      done

      因為本方法調用expr故運行速度會比第1,第2種慢不少不過可稍作改進,將i=`expr $i + 1`改為i=$(($i+1))即可稍作速度的提升,不過具體得看相應shell環境是否支持

      4.

      復制代碼 代碼如下:

      for i in {1..10000000;do

      echo $i

      done

      其實選用哪種方法具體還是得由相應的shell環境的支持,達到預期的效果,再考慮速度方面的問題。

      示例:

      代碼如下:

      # !/bin/sh

      i=1

      function test_while(){

      i=1

      while [ $i ]

      do

      echo $i

      i=`expr $i + 1`

      if [ $i -ge 10 ]; then

      break

      fi

      done

      }

      function test_for(){

      i=1

      for ((i=1; i<=100; i++)); do

      echo $i

      if [ $i -ge 10 ]; then

      break

      fi

      done

      }

      function test_continue(){

      i=1

      for i in $(seq 100); do

      if (( i==0 )); then

      echo $i

      continue

      fi

      done

      }

      echo "test_while..."

      test_while

      echo "test_for..."

      test_for

      echo "test_continue..."

      test_continue

      運行結果:

       代碼如下:

      test_while...

      1

      2

      3

      4

      5

      6

      7

      8

      9

      test_for...

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      test_continue...

      10

      20

      30

      40

      50

      60

      70

      80

      90

      100

            注< >:更多精彩教程請關注三聯編程

    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved