【发布时间】:2017-01-25 12:42:57
【问题描述】:
我认为人们普遍认为unset IFS 将 IFS 恢复为其默认值。
我找不到以下代码的原因
echo -n "_${IFS}_" | xxd
IFS=':'
echo -n "_${IFS}_" | xxd
unset IFS
echo -n "_${IFS}_" | xxd
echo "${IFS-IFS is unset}"
返回这个
0000000: 5f20 090a 5f _ .._
0000000: 5f3a 5f _:_
0000000: 5f5f __
IFS is unset
在我的 Ubuntu 和 Android 中。
如您所见,IFS 实际上是未设置的。
提前致谢
【问题讨论】:
-
@anubhava 正如@tripleee 的链接所解释的那样,IFS 未恢复为默认值
$' \t\n'是出乎意料的。你们真的看过我的问题吗? -
unset IFS确实会取消设置IFS。它不会设置为$' \t\n'。虽然空的IFS也表现得像将它设置为$' \t\n' -
感谢@anubhava,现在我明白了。
-
@anubhava 这仅在某些情况下是正确的。在其他情况下,如果您
unset IFS可能会导致难以找到错误,则这是错误的。