Linux的IFS

作者: SnailTyan | 来源:发表于2016-12-13 18:19 被阅读67次

    文章作者:Tyan
    博客:noahsnail.com  |  CSDN  |  简书

    1. IFS定义

    Linux下有一个特殊的环境变量叫做IFS,叫做内部字段分隔符(internal field separator)。IFS环境变量定义了bash shell用户字段分隔符的一系列字符。默认情况下,bash shell会将下面的字符当做字段分隔符:空格、制表符、换行符。

    2. IFS修改

    Bash shell会将上面的三个字符当做列表中新字段的开始。例如,1 2 3字符串在shell中会当做三个字段1,2,3。如果想要以逗号分隔字段,则要修改IFS的值,修改如下:

    IFS=','
    

    3. Demo

    • shell脚本文件test.sh
    #!/bin/bash
    # test IFS
    
    # 以逗号分割字段
    IFS=','
    for number in $(cat file)
    do
      echo "Number $number"
    done
    
    • test.sh用的文件file
    1,2,3
    
    • 运行结果
    $ ./test.sh 
    Number 1
    Number 2
    Number 3
    

    4. 注意事项

    • 在shell脚本较大时可能在某些部分需要修改IFS,而某些部分要改回默认的IFS值,操作如下
    ...
    IFS.OLD=$IFS
    ...
    IFS=','
    ...
    IFS=$IFS.OLD
    ...
    
    • 需要多个符号作为分隔符,以:,;作为分隔符
    IFS=':;,'
    

    参考资料:

    1. Linux命令行与shell脚本大全

    相关文章

      网友评论

        本文标题:Linux的IFS

        本文链接:https://www.haomeiwen.com/subject/mcebmttx.html