显示当前变量
我希望将
为什么无法重置IFS变量?
IFS
:echo $IFS |xxd
00000000: 0a
我希望将
IFS
的默认值重置为 \t\n
。IFS=$' \t\n'
echo $IFS |xxd
00000000: 0a
为什么无法重置IFS变量?
IFS
,问题出在你的echo
上。应该使用echo -n "$IFS" | xxd
。man bash
(强调是我的):IFS
的每个字符视为分隔符,并在这些字符上将其他展开的结果拆分成单词。如果IFS
未设置,或其值恰好为默认值<space><tab><newline>
,则忽略前面和后面的空格、制表符和换行符,并且除此之外的任何IFS
字符序列都将用于分隔单词。如果IFS
的值不是默认值,则忽略单词前后的空格和制表符,只要空格或制表符是IFS
值中的空白字符即可。任何不是IFS
空白字符的IFS
字符及其相邻的IFS
空白字符都用于分隔字段。一系列的IFS
空白字符也被视为分隔符。如果IFS
的值为空,则不进行单词拆分。IFS
使用双引号,它会通过Shell的单词拆分逻辑。由于IFS
本身包含IFS
字符,因此Shell将其忽略。使用双引号可以避免这种情况。