shell IFS的问题
发表于 : 2009-06-03 2:12
这个脚本如下
可见如果是单个比如本script中的 "." ":" 结果是正常的 可是 当出现a
cccc:::d 可以通过结果看出 在cccc后的第一个":"处 还是符合的 可是 后两个":" 就变成了 空字符了
为什么
如果避免此种结果 得出想要的结果
代码: 全选
#! /bin/bash
output_args_one_per_line()
{
for arg
do echo "[$arg]"
done
}
echo ; echo "IFS=\"\""
echo "-------"
IFS=" "
var=" a b c "
output_args_one_per_line $var
echo ; echo "IFS=\n"
echo "--------"
IFS=$'\n'
var="a
b:::
c:"
output_args_one_per_line $var
echo ; echo "IFS=."
echo "--------"
IFS=$'.'
var="a.b.cccc....d"
#var=":a::b:c:::"
output_args_one_per_line $var
echo ; echo "IFS=:"
echo "--------"
IFS=$':'
var="a:b:cccc:::d"
#var=":a::b:c:::"
output_args_one_per_line $var
echo
exit 0
代码: 全选
执行结果
IFS=""
-------
[a]
[b]
[c]
IFS=\n
--------
[a]
[b:::]
[c:]
IFS=.
--------
[a]
[b]
[cccc]
[]
[]
[]
[d]
IFS=:
--------
[a]
[b]
[cccc]
[]
[]
[d]
可见如果是单个比如本script中的 "." ":" 结果是正常的 可是 当出现a
为什么
如果避免此种结果 得出想要的结果
代码: 全选
[a]
[b]
[cccc]
[d]
而非
[a]
[b]
[cccc]
[]
[]
[d]