linux下在bash中按行处理带空格的文本

1760阅读 0评论2018-06-20 xdsnet
分类:LINUX

在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,则没有正确处理参数中空格


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