無線&移動互聯網技術研發

          換位思考·····
          posts - 19, comments - 53, trackbacks - 0, articles - 283
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          控制流結構——for

          Posted on 2009-11-29 12:06 Gavin.lee 閱讀(213) 評論(0)  編輯  收藏 所屬分類: Linux shell 入門

           

          for循環
          for 變量名 in 列表
          do
                 命令 1
                 命令 2
          done
          當變量值在列表里,for循環即執行一次所有命令,使用變量名訪問列表中取值。命令可為任何有效的shell命令和語句。變量名為任何單詞。in列表用法是可選的,如果不用它, for循環使用命令行的位置參數。in列表可以包含替換、字符串和文件名,下面看一些例子。
          Shell代碼
          1. /home/l/g/tomotoboy/for >cat fortest   
          2. #!/bin/sh   
          3. #for_i   
          4. for loop in 1 2 3 4 5 6  
          5. do   
          6.     echo $loop   
          7. done   
          8.   
          9. #forlist   
          10. for loop in "orange red blue grey"  
          11. do   
          12.    echo $loop   
          13. done   
          14.   
          15. #forls   
          16. for loop in `ls`   
          17. do   
          18.      echo $loop   
          19. done   
          20.   
          21.   
          22. #forparam   
          23. for params   
          24. do   
          25.      echo "you supplied $params as command line option"  
          26.      echo $params   
          27. done   
          28.   
          29. for params in "$@"  
          30. do   
          31.      echo "you supplied $params as command line option"  
          32.      echo $params   
          33. done   
          34.   
          35. #forcommand   
          36. for loop   
          37. do   
          38.       find `pwd` -name $loop -print   
          39. done   
          40.   
          41.   
          42. /home/l/g/tomotoboy/for >fortest fortest   
          43. 1  
          44. 2  
          45. 3  
          46. 4  
          47. 5  
          48. 6  
          49. orange red blue grey   
          50. fortest   
          51. you supplied fortest as command line option   
          52. fortest   
          53. you supplied fortest as command line option   
          54. fortest  


          使用for循環連接服務器
          因為for循環可以處理列表中的取值,現設變量為網絡服務器名稱,并使用for循環連接每一服務器。
          Shell代碼
          1. #!/bin/sh   
          2. #forping   
          3. HOSTS="sina.com cqu.edu.cn baidu.com"  
          4. for loop in $HOSTS   
          5. do   
          6.      ping -c 2 $loop   
          7. done  
          多文件轉換
          匹配所有以.sed結尾文件并將其轉換為大寫。這里使用了 l s和cat命令。l s用于查詢出相關文件,cat用于將之管道輸出至trr命令。目標文件擴展名為.UC,注意在for循環中使用l s命令時反引號的用法。
          Shell代碼
          1. #!/bin/sh   
          2. #forstr   
          3. for files in `ls *.sed`   
          4. do   
          5.     cat $files |tr "[a-z]"  "[A-Z]" >$files.UC   
          6. done   
          7.   
          8. /home/l/g/tomotoboy >cat change.sed   
          9. #!/bin/sed -f   
          10. #change.sed   
          11. /tomotoboy/ c\   
          12. I love China,Ilove Wanzhi.   
          13. /home/l/g/tomotoboy >ls *.UC   
          14. append.sed.UC  change.sed.UC   
          15. /home/l/g/tomotoboy >cat change.sed.UC   
          16. #!/BIN/SED -F   
          17. #CHANGE.SED   
          18. /TOMOTOBOY/ C\   
          19. I LOVE CHINA,ILOVE WANZHI.  


          多sed刪除操作
          下面的例子中,sed用于刪除所有空文件,并將輸出導至以 . HOLD.為擴展名的新文件,mv將這些文件移至初始文件中。
          Shell代碼
          1. #!/bin/sh   
          2. #forsed   
          3. for files in `ls *.sed`   
          4. do   
          5.    sed -e "/^$/d" $files > $files.HOLD   
          6.    mv $files.HOLD $files   
          7. done  


          循環計數
          前面討論expr時指出,循環時如果要加入計數,使用此命令。下面使用 l s在for循環中列出文件及其數目。
          Shell代碼
          1. /home/l/g/tomotoboy >cat forcount   
          2. #!/bin/sh   
          3. #forcount   
          4. count=0  
          5. for files in *   
          6. do   
          7.   count=`expr $count + 1`   
          8. done   
          9. echo "There are $count files in `pwd` we need to process"  

          主站蜘蛛池模板: 明光市| 长葛市| 三明市| 民丰县| 合作市| 安吉县| 丰宁| 洛宁县| 辛集市| 盐源县| 桦川县| 辰溪县| 本溪| 临武县| 米脂县| 辽源市| 万安县| 青州市| 新安县| 集安市| 绥芬河市| 桦南县| 西宁市| 吐鲁番市| 奉新县| 墨玉县| 剑阁县| 新余市| 鄂尔多斯市| 丹阳市| 和平区| 从化市| 东至县| 阳山县| 兴城市| 通海县| 司法| 增城市| 黄冈市| 洛隆县| 民丰县|