什么是IFS ?
IFS是bash的内部变量,称为内部域分隔符.这个变量用来决定Bash在解释字符串时如何识别域,或者单词边界.如何查看当前的IFS值?
[root@Dong tmp]# echo "$IFS"
由于IFS默认为空白(空格,tab和新行),所以使用以上的命令似乎看不到字符。没关系,你可以用od命令看16进制,或是2进制值:
1 | [root@Dong tmp]# echo "$IFS" | od -t x1 |
注意:$*使用$IFS 中的第一个字符,比如:
1 | [root@Dong tmp]# set w x y z;echo "$*" |
- 如何修改IFS值?
普通的赋值命令即可:
1 | [root@Dong tmp]# IFS=":" |
- 实验:$*使用$IFS 中的第一个字符
1 | [root@Dong tmp]# IFS="\\:;" |
- 备份IFS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15[root@Dong tmp]# echo "$IFS" | od -t x1
0000000 20 09 0a 0a
0000004
[root@Dong tmp]# OLDIFS="$IFS"
[root@Dong tmp]# echo "$OLDIFS" | od -t x1
0000000 20 09 0a 0a
0000004
[root@Dong tmp]# IFS=":"
[root@Dong tmp]# echo "$IFS" | od -t x1
0000000 3a 0a
0000002
[root@Dong tmp]# IFS="$OLDIFS"
[root@Dong tmp]# echo "$IFS" | od -t x1
0000000 20 09 0a 0a
0000004