内部字段分隔符(Internal Field Separator,IFS)是shell脚本中的一个重要概念。在处理文本数据时,它可是相当有用。我们将会讨论把单个数据流划分成不同数据元素的定界符。内部字段分隔符是用于特定用途的定界符。IFS是存储定界符的环境变量。它是当前shell环境使用的默认定界字符串。
实例1:
1 data="name,sex,rollno,location" 2 #我们可以使用IFS读取变量中的每一个条目 3 oldIFS=$IFS 4 IFS="," 5 for item in $data;do 6 echo Item: $item 7 done 8 IFS=$oldIFS 输入如下: Item: name Item: sex Item: rollno Item: location
IFS的默认值为空白字符(换行符、制表符或者空格)。
当IFS被设置为逗号时,shell将逗号解释成一个定界符,因此变量$item在每次迭代中选取由逗号分隔的字串作为变量值。
如果没有IFS设置成",",那么上面的脚本会将全部数据作为单个字符串打印出来。
实例2:
1 #!/bin/bash 2 line="root:x:0:0:root:/root:/bin/bash" 3 oldIFS=$IFS; 4 IFS=":" 5 count=0 6 for item in $line;do 7 [ $count -eq 0 ] && user=$item; 8 [ $count -eq 6 ] && shell=$item; 9 let count++ 10 done; 11 IFS=$oldIFS 12 echo $user\'s shell is $shell; 输出为: root's shell is /bin/bash
转载于:https://blog.51cto.com/jiaxu201/1307364