我试图改变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
%q
IFS
help 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