美文网首页
IFS使用之道

IFS使用之道

作者: kezihehe | 来源:发表于2017-02-28 14:05 被阅读0次

IFS是什么鬼

IFS(Internal Field Seprator),即内部域分隔符

IFS(Internal Field Seprator),即内部域分隔符,完整定义是“The shell uses the value stored in IFS, which is the space, tab, and newline characters by default, to delimit words for the read and set commands, when parsing output from command substitution, and when performing variable substituioin.”

IFS查看

IFS存在于登录shell的局部环境变量中

[root@localhost ~]# set|grep IFS
IFS=$' \t\n'
[root@localhost ~]#

shell脚本中应用

通常在shell脚本中,我们会使用for遍历使用特定字符分隔的字符串,而for循环的默认分隔符是空格,这是我们就需要修改当前脚本的默认分隔符。例如,遍历如下用分号分隔的字符串

#!/bin/sh
file_name='hello.txt:world.txt:test.txt'  #被遍历的字符串
OLD_IFS=$IFS  #将默认的IFS保存到临时变量中,以便后续恢复默认值
IFS=':'  #定义新的分隔符
for i in $file_name;do
  echo $i
done
IFS=$OLD_IFS  #恢复默认的分隔符

指定的分隔符中含有转义字符

在有些情况下,我们的分隔符可能用到转义字符,录入换行符(\n)、制表符(\t)等,如果直接使用IFS='\n'或者IFS='\t'就会发生错误,这时,就需要使用$符号+单引号+转义字符的形式了,例如使用换行符作为分隔符就需要这样设置

IFS=$'\n'

例如解析某文件(slaves)中各行的值,文件内容如下

nginx
tomcat
hodoop
s100
kafka

shell脚本代码如下

#!/bin/sh
host_list=`cat slaves`
OLD_IFS=$IFS
IFS=$'\n'  #注意是单引号
for i in $host_list;do
  echo $i
done
IFS=$OLD_IFS

相关文章

  • IFS使用之道

    IFS是什么鬼 IFS(Internal Field Seprator),即内部域分隔符 IFS(Internal...

  • shell IFS分隔符

    IFS分隔符 IFS分隔符 1 IFS 介绍 2 IFS简单实例2.1 查看变量 IFS 的值2.2 @ 的细微差...

  • Shell中将字符串拆分成数组

    a="one,two,three,four"OLD_IFS="$IFS" FS="," arr=($a)IFS="...

  • Shell读取整行内容

    使用for循环读取 注意:使用 IFS=$'\n' 指定分隔符为换行符,默认分隔符为空格。 使用while循环读取

  • Bash循环处理带有空格的文件名

    作者:crane-yuan 日期:2017-05-02 解决方法 使用IFS(the Internal Field...

  • IFS

    据说IFS各大奢侈品牌聚集之地,今天有幸去逛(晕)了一圈。给我最大的感受就是:有钱真好!所谓的高大上,看起来了也是...

  • shell-9 while

    while循环语法 while实战1)使用while 遍历文件内容 执行结果 使用while读出文件中的列,IFS...

  • Linux Shell-IFS变量使用

    在bash中IFS是内部的域分隔符,如下是一些值得注意的地方。 IFS的默认值为:空白(包括:空格,tab, 和新...

  • 3.5.7 Word分割(Word Splitting)

    助记定义 IFS字符:shell变量$IFS中的每个字符WS字符(whitespace characters):s...

  • IFS大楼

网友评论

      本文标题:IFS使用之道

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