Chinaunix首页 | 论坛 | 博客
  • 博客访问: 703140
  • 博文数量: 95
  • 博客积分: 1773
  • 博客等级: 上尉
  • 技术积分: 1653
  • 用 户 组: 普通用户
  • 注册时间: 2007-08-17 23:28
文章分类
文章存档

2018年(2)

2017年(10)

2016年(7)

2015年(48)

2014年(2)

2013年(2)

2012年(2)

2011年(7)

2010年(7)

2009年(3)

2008年(1)

2007年(4)

分类: LINUX

2018-06-20 10:49:45

在bash中处按行处理带空格的文本,个人觉得需要注意的地方有两点
1. 就是分隔符的确定
2. 就是调用时参数获取
对于1,因为要按行处理,所以分隔符只能是'\n'
这在bash中需要指定IFS环境变量,这个环境变量默认的值是' \t\n',即空格,TAB和换行,一般处理的办法是

点击(此处)折叠或打开

  1. #备份原有分隔符
  2. IFS_OLD=$IFS
  3. #设置新分隔符为回车
  4. IFS=$'\n'
  5. ALINES=$(cat $FILEPATH )
  6. for ALINE in ALINES;do
  7.     <相应处理>
  8. done
  9. #回复原有分隔符
  10. IFS=$IFS_OLD
对于2,因为内容中包含了空格,所以命令行参数获取时一般也只能采用$*来获取,例如

点击(此处)折叠或打开

  1. ABC(){
  2.    local ARGS="$*"
  3.    echo ${ARGS}
  4. }
  5. ABC2(){
  6.    local ARG1="$1"
  7.    echo ${ARG1}
  8. }
  9. ABC 123 456
  10. ABC2 123 456
执行上面的脚本的输出会是

点击(此处)折叠或打开

  1. 123 456
  2. 123
因为第一次ABC调用,正确处理了参数中的空格
而第二次调用ABC2,则没有正确处理参数中空格


阅读(1819) | 评论(0) | 转发(0) |
0

上一篇:BerryBoot v2.0 - 通用多系统安装、加载工具

下一篇:没有了

给主人留下些什么吧!~~