LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 668|回复: 2

刚学shell,请教一个问题![已解决]

[复制链接]
发表于 2004-12-8 10:13:02 | 显示全部楼层 |阅读模式
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
又变成:号空格符了。
发表于 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都有格式控制符,但作用不同。前者用于输入格式控制,后者用于输出格式显示效果。
 楼主| 发表于 2004-12-8 12:59:32 | 显示全部楼层
高,受益。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表