linux shell IFS分隔符 简介 IFS=$‘\n‘ 使用换行符做分隔符

IFS是internal field separator的缩写,shell的特殊环境变量。ksh根据IFS存储的值,可以是空格、tab、换行符或者其他自定义符号,来解析输入和输出的变量值。

用IFS定制分隔符的方式范例

IFS='|'
text='a a a a|b b b b|c c c c'
for i in $text;do echo "i=$i";done

IP地址倒序

如果有一IP地址220.112.253.111,欲将这个IP地址颠倒顺序,你可以定义IFS为".",然后直接echo这个地址即可得到此IP的4个数值,然后重新把IFS设为空格,重新组合四个IP>地址的数值即可。

# The following code segment will only work in ksh,# and it will fail in bash
IP=220.112.253.111
IFS="."
TMPIP=$(echo $IP)
IFS=" " # space
echo $TMPIP | read ip1 ip2 ip3 ip4
INVERT_IP=$ip4.$ip3.$ip2.$ip1

使用换行符做分隔符 

IFS=$'\n'

#!/bin/sh

conf="ABC
A B C
1|2|3
1 2 3"
echo "$conf"

echo --------------
echo IFS:
echo -n "$IFS"|xxd 
echo --------------
for c in $conf;do
    echo "line='$c'";
done

echo --------------
#IFS=$'\n'  表示用 换行符 做分隔
#IFS="\n" 与 IFS='\n'  都是用 n 字符作为分隔
IFS=$'\n'
echo IFS:
echo -n "$IFS"|xxd 
echo --------------
for c in $conf;do
    echo "line='$c'";
done

输出

ABC
A B C
1|2|3
1 2 3
--------------
IFS:
00000000: 2d6e 2020 090a 0a                        -n  ...
--------------
line='ABC'
line='A'
line='B'
line='C'
line='1|2|3'
line='1'
line='2'
line='3'
--------------
IFS:
00000000: 2d6e 200a 0a                             -n ..
--------------
line='ABC'
line='A B C'
line='1|2|3'
line='1 2 3'

相关文章

在Linux系统中,设置ARP防火墙可以通过多种方法实现,包括使...
在Linux环境下,使用Jack2进行编译时,可以采取以下策略来提...
`getid`命令在Linux系统中用于获取当前进程的有效用户ID(EU...
在Linux环境下,codesign工具用于对代码进行签名,以确保其完...
Linux中的`tr`命令,其英文全称是“transform”,即转换的意...
Linux中的ARP防火墙是一种用于防止ARP欺骗攻击的安全措施,它...