我正在阅读有关bash 内部变量的信息,并遇到了以下IFS
示例:
output_args_one_per_line()
{
for arg
do
echo "[$arg]"
done # ^ ^ Embed within brackets, for your viewing pleasure.
}
情况1
IFS=" "
var=" a b c "
output_args_one_per_line $var
#OUTPUT
# [a]
# [b]
# [c]
案例2
IFS=:
var=":a::b:c:::" # Same pattern as above
CASE2
# but substituting ":" for " " ...
output_args_one_per_line $var
# []
# [a]
# []
# [b]
# [c]
# []
# []
现在,根据我的理解,如果值IFS
是默认值,那么\t\n
前导和尾随空格将被删除。因此,对于 case1 bash var
,a b c
因此输出。
根据我的说法,对于 case2,bash 将var
其视为此处的|a||b|c|||
处理|
方式。space
我检查了它使用
Noob@Noob:~/tmp$ IFS=$':' FOO=$":a::b:c:::"; echo $FOO $'x'
a b c x
所以,我对案例 2 的预期输出是
# []
# [a]
# []
# []
# [b]
# [c]
# []
# []
# []
那么,有人可以在内部向我解释 bashvar
在案例 2 中的处理方式以及我的理解哪里出错了。