LinuxSir.cn,穿越时空的Linuxsir!

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

命令的输出赋给变量的问题

[复制链接]
发表于 2005-9-25 12:50:31 | 显示全部楼层 |阅读模式
find . -type d

上述命令直接输出时是每一行一个目录,而赋给变量:
DIRS=$(find . -type d)


echo变量却成了每个目录间空格分隔,这是格式的转换是shell作的吗?
发表于 2005-9-25 13:24:43 | 显示全部楼层
因为shell缺省的IFS。try:

  1. newifs=$IFS
  2. IFS="\n"
  3. then echo your $DIRS variable again.
  4. IFS=$newifs
  5. then echo your $DIRS.
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-9-25 14:42:54 | 显示全部楼层
Post by yongjian
因为shell缺省的IFS。try:
newifs=$IFS
IFS="\n"
then echo your $DIRS variable again.
IFS=$newifs
then echo your $DIRS.


的确是这样,不过\n不是换行吧,换成任意非换行符都行。一开始我以为\n是换行符,怎么也理解不通:
$ IFS="\n"
$ printf '<%s>\n' "$IFS" | cat -vt
<\n>
$ IFS="
>"
$ printf '<%s>\n' "$IFS" | cat -vt
<
>
$
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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