IFS是internal field separator的缩写,shell的特殊环境变量。ksh根据IFS存储的值,可以是空格、tab、换行符或者其他自定义符号,来解析输入和输出的变量值。
如果有一IP地址220.112.253.111, 欲将这个IP地址颠倒顺序,你可以定义IFS为".",然后直接echo这个地址即可得到此IP的4个数值,然后c重新把IFS设为空格,重新组合四个IP地址的数值即可。
更详细的IFS的介绍参见下文:(原文地址:http://www.livefirelabs.com/unix_tip_trick_shell_script/oct_2003/10132003.htm)
Another shell variable that you should become comfortable using is the IFS, or internal field separator, variable. 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 substitution. |
$ line=learn:unix:at:livefire:labs |
The first command assigns the string “learn:unix:at:livefire:labs” to the variable named line. You can see from the first for loop that the shell treats the entire string as a single field. This is because the string does not contain a space, tab, or newline character. |
livefire:x:100:1::/export/home/livefire:/bin/ksh |
Notice that the original value of IFS was stored in OIFS (“O” for original) prior to changing its value. After you are finished using the new definition, it would be wise to return it to its original value to avoid unexpected side effects that may surface later on in your script. |
|
The output of the echo command is piped into the octal dump command, giving you its octal equivalent. You can then use an ASCII table to determine what characters are stored in the variable. Hint: Ignore the first set of zeros and the second newline character (012), which was generated by echo. |