zoukankan      html  css  js  c++  java
  • shell里的IFS内置环境变量

    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
  • 相关阅读:
    Maven入门
    sdk&jdk&jre
    常用git指令
    Spring 3.x 读书笔记
    JAVA多线程---高并发程序设计
    JAVA多线程---ThreadLocal<E>
    JAVA多线程--Thinking in java
    2017年书单
    正则表达式获取多个img src的值
    使用summernote编辑器上传图片,重写onImageUpload
  • 原文地址:https://www.cnblogs.com/bigbean/p/3661533.html
Copyright © 2011-2022 走看看