IFS 变更尚未生效

IFS 变更尚未生效

我试图改变IFS内部字段分隔符) 字符转换为逗号以进行文件处理,但令我惊讶的是,它IFS没有改变。

以下是命令和输出的顺序:

mtk4@mtk-laptop:~$ echo .$IFS.
. .                                    # A space
mtk4@mtk-laptop:~$ IFS=","             # No error was thrown, no message
mtk4@mtk-laptop:~$ echo .$IFS.
. .                                    # Again echo'd it, but no change

请告诉我,这里出了什么问题?

答案1

$variable当扩展 a时不带引号时,IFS 也用作分隔符。换句话说,您确实更改了它,但是,它被视为两个点之间的分隔符。而且,该echo命令不知道您的 $IFS 是什么,即使知道,它也不会将其放在输出参数之间,因此您在那里有一个空格。尝试echo ".$IFS."

答案2

您可以使用带有格式说明符的bash内置命令来检查变量的值(请参阅)。printf%qIFShelp printf

printf '%q\n' "$IFS"    # $' \t\n'

# alternative, as already suggested by jw013
printf '%s' "$IFS" | od -A n -t x1 | xargs     # 20 09 0a

相关内容