|
发表于 2004-12-8 12:53:58
|
显示全部楼层
回复: 刚学shell,请教一个问题!
最初由 providence 发表
I F S用作s h e l l指定的缺省域分隔符。原理上讲域分隔符可以是任意字符,但缺省通常为空
格、新行或t a b键。I F S在分隔文件或变量中各域时很有用。下面的例子将I F S设置为冒号,然
后echo PAT H变量,给出一个目录分隔开来的可读性很强的路径列表。
[root@first root]# export IFS=:
[root@first root]# echo $PATH
/usr/kerberos/sbin /usr/kerberos/bin /usr/local/sbin /usr/local/bin /sbin /bin /usr/sbin /usr/bin /usr/X11R6/bin /root/bin
这点没看懂,既然分隔符是:号,怎么显示PATH变量是空格呢
要设置其返回初始设置:
$ IFS=<space><tab>; export IFS
这里< s p a c e > < t a b >为空格和t a b键。
/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin
又变成:号空格符了。
IFS(输入分隔符)决定了如何将你的输入或者要操作的对象分隔成域,最后的处理一般是用OFS(输出分隔符)来将各个域输出,而输出分隔符一般是空格。
你可以从C的角度来理解,scanf和printf都有格式控制符,但作用不同。前者用于输入格式控制,后者用于输出格式显示效果。 |
|