在bash中处按行处理带空格的文本,个人觉得需要注意的地方有两点
1. 就是分隔符的确定
2. 就是调用时参数获取
对于1,因为要按行处理,所以分隔符只能是'\n'
这在bash中需要指定IFS环境变量,这个环境变量默认的值是' \t\n',即空格,TAB和换行,一般处理的办法是
-
#备份原有分隔符
-
IFS_OLD=$IFS
-
#设置新分隔符为回车
-
IFS=$'\n'
-
ALINES=$(cat $FILEPATH )
-
for ALINE in ALINES;do
-
<相应处理>
-
done
-
#回复原有分隔符
-
IFS=$IFS_OLD
对于2,因为内容中包含了空格,所以命令行参数获取时一般也只能采用$*来获取,例如
-
ABC(){
-
local ARGS="$*"
-
echo ${ARGS}
-
}
-
-
ABC2(){
-
local ARG1="$1"
-
echo ${ARG1}
-
}
-
-
ABC 123 456
-
ABC2 123 456
执行上面的脚本的输出会是
因为第一次ABC调用,正确处理了参数中的空格
而第二次调用ABC2,则没有正确处理参数中空格
阅读(1819) | 评论(0) | 转发(0) |