posts - 19, comments - 53, trackbacks - 0, articles - 283
            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          控制流結(jié)構(gòu)——for

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

           

          for循環(huán)
          for 變量名 in 列表
          do
                 命令 1
                 命令 2
          done
          當(dāng)變量值在列表里,for循環(huán)即執(zhí)行一次所有命令,使用變量名訪問(wèn)列表中取值。命令可為任何有效的shell命令和語(yǔ)句。變量名為任何單詞。in列表用法是可選的,如果不用它, for循環(huán)使用命令行的位置參數(shù)。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循環(huán)連接服務(wù)器
          因?yàn)閒or循環(huán)可以處理列表中的取值,現(xiàn)設(shè)變量為網(wǎng)絡(luò)服務(wù)器名稱,并使用for循環(huán)連接每一服務(wù)器。
          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  
          多文件轉(zhuǎn)換
          匹配所有以.sed結(jié)尾文件并將其轉(zhuǎn)換為大寫。這里使用了 l s和cat命令。l s用于查詢出相關(guān)文件,cat用于將之管道輸出至trr命令。目標(biāo)文件擴(kuò)展名為.UC,注意在for循環(huán)中使用l s命令時(shí)反引號(hào)的用法。
          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用于刪除所有空文件,并將輸出導(dǎo)至以 . HOLD.為擴(kuò)展名的新文件,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  


          循環(huán)計(jì)數(shù)
          前面討論expr時(shí)指出,循環(huán)時(shí)如果要加入計(jì)數(shù),使用此命令。下面使用 l s在for循環(huán)中列出文件及其數(shù)目。
          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"  

          主站蜘蛛池模板: 浮梁县| 丽水市| 武夷山市| 建宁县| 阿尔山市| 临泉县| 五寨县| 崇左市| 上林县| 南投县| 衡阳市| 旅游| 始兴县| 蒙城县| 揭东县| 大连市| 大田县| 南安市| 呼伦贝尔市| 祥云县| 嘉黎县| 永川市| 沙坪坝区| 宿迁市| 始兴县| 谷城县| 涡阳县| 鄂温| 大理市| 安图县| 尚义县| 基隆市| 南江县| 平原县| 阿合奇县| 佛山市| 湄潭县| 酉阳| 怀宁县| 上思县| 库车县|