jasmine214--love

          只有當你的內心總是充滿快樂、美好的愿望和寧靜時,你才能擁有強壯的體魄和明朗、快樂或者寧靜的面容。
          posts - 731, comments - 60, trackbacks - 0, articles - 0

          shell里的IFS內置環境變量

          Posted on 2013-03-12 18:19 幻海藍夢 閱讀(2828) 評論(0)  編輯  收藏 所屬分類: Shell
          IFS 的全稱是 Interal Field Separator ,即“內部區域分隔符”,它也是一個內置環境變量,存儲著默認的文本分隔符,默認下這分隔符是空格符(space character),制表符(tab) 以及新行(newline) 。先看下面一個簡單示例:
          1
          2
          3
          4
          5
          6
          7
          8
          #!/bin/sh
           
          msg="welcome to www groad net"
           
          for item in $msg
          do
              echo "Item: $item"
          done

          運行輸出:
          # sh temp.sh
          Item: welcome
          Item: to
          Item: www
          Item: groad
          Item: net

          上 面用一個 for 循環遍歷了變量 msg 里的所有項。 msg 變量里存儲的各個單詞都是用空格分開的,而 for 能依次取出這些單詞,正是依靠 IFS 這個變量作為分隔符。如果將 msg 變量改為 CSV (comma separaed values 逗號分隔值)格式,那么按照默認的 IFS 值就無法解析出各個單詞,如:
          sh temp.sh
          Item: welcome,to,www,groad,net

          這樣,整個字符串就當成一個 item 被獲取了。

          此時如果仍然希望逐個獲得各個單詞,那么需要修改 IFS 變量的值,如:
          1
          2
          3
          4
          5
          6
          7
          8
          9
          10
          11
          12
          13
          14
          #!/bin/sh
           
          data="welcome,to,www,groad,net"
           
          IFSBAK=$IFS     #備份原來的值
           
          IFS=,
           
          for item in $data
          do
              echo Item: $item
          done
           
          IFS=$IFSBAK     #還原

          運行輸出:
          # sh tmp.sh
          Item: welcome
          Item: to
          Item: www
          Item: groad
          Item: net
          主站蜘蛛池模板: 西乌珠穆沁旗| 定西市| 连平县| 潜江市| 徐州市| 营山县| 达日县| 扶余县| 壤塘县| 延川县| 托克逊县| 彩票| 嫩江县| 西丰县| 神池县| 宁晋县| 高陵县| 会宁县| 巩留县| 封开县| 荥阳市| 密云县| 西贡区| 威海市| 新巴尔虎右旗| 蛟河市| 鲜城| 四会市| 右玉县| 漯河市| 神木县| 肥城市| 犍为县| 峨山| 东辽县| 百色市| 柯坪县| 磐石市| 克东县| 界首市| 福建省|