+ -
当前位置:首页 → 问答吧 → bash数组问题

bash数组问题

时间:2011-06-20

来源:互联网

有个文件如下:
  1. cat makelib.ini
  2. src/pub/libpara                                   libpara
  3. src/pub/libpub                        libpub  sss
  4. src/pub/db_public_lib                 db_public_lib
  5. src/pub/libring_buf                   libring_buf
  6. src/pub/libring_buf                   libring_buf_nolog
  7. src/pub/logger                        liblogger
  8. src/pub/libtableout                   libtableout
  9. src/admin/nodemng                     libnodemng
  10. src/admin/procmng                     libprocmng
复制代码
脚本如下,我想提取两个段:
  1. cat ../ss.sh
  2. #!/bin/sh

  3. while read line
  4. do
  5.     sections=(`echo $line`)
  6.     [ "${#sections[*]}" -lt 2 ] && continue
  7.     tag="${sections[1]}"
  8.     echo "${#tag}, tag: $tag"
  9. done < "makelib.ini"
复制代码
输出如下:
  1. 8, tag: libpara
  2. 6, tag: libpub
  3. 14, tag: db_public_lib
  4. 12, tag: libring_buf
  5. 18, tag: libring_buf_nolog
  6. 10, tag: liblogger
  7. 12, tag: libtableout
  8. 11, tag: libnodemng
  9. 11, tag: libprocmng
复制代码
注意第第二行,第一行只有两个段,"libpara"的长度应该是7的,结果打出来是8,其它行也是一样
第二行有三个段,第二段的"libpub"长度打出来是正常的

我试着打过
echo "$tag            "
即后面加了很多空格,结果会出现空格从头开始覆盖的情况,最后一个字莫非是回车符?? 这是什么情况啊有没有人用过

作者: mpstat   发布时间: 2011-06-20

明显你的文本是CRLF结尾的windows格式的,CR被计算到字符个数里了

作者: liion631818   发布时间: 2011-06-20

回复 liion631818


果然。。。。
用了dos2unix后就发现正常了

作者: mpstat   发布时间: 2011-06-20

回复 liion631818


  那为什么在vim里看不到^M?

作者: mpstat   发布时间: 2011-06-20

回复 mpstat


   
这个不懂,我打开有看到^M,是不是你改设置了?

作者: liion631818   发布时间: 2011-06-20

为什么你的read可以读到^M???????????

作者: liion631818   发布时间: 2011-06-20