如何检查 IFS 的当前值?

如何检查 IFS 的当前值?

我目前正在运行一个 shell 脚本,我怀疑问题可能是因为我不小心更改了独立财务顾问这是通向其他东西的空间。

我想检查 IFS 的当前值,但我不知道如何去找到它。

我在 VMWare 上运行 Ubuntu。

答案1

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

格式%q参数用于插入引用的变量$IFS并转义 shell 会解释的控制字符。

在这里您可以看到 IFS 通过空格、制表符和换行符进行分隔。

答案2

您可能已经知道,的默认值IFS<space><tab><newline>。使用:

echo "$IFS"

您大概可以推断出有一个换行符和一些其他空格字符,但不能确定。

要确定IFS变量的确切值,可以调用cat以下命令的帮助:

echo "$IFS" | cat -ETv

相当于:

cat -ETv <<< "$IFS"

默认值的示例输出IFS

cat -ETv <<< "$IFS"
 ^I$
$

从前面的输出中,你可以推断出开头肯定有一个空格字符和一个换行符。但是其他奇怪的字符是怎么回事呢?让我们看看man cat

   -E, --show-ends
          display $ at end of each line

   -T, --show-tabs
          display TAB characters as ^I

   -v, --show-nonprinting
          use ^ and M- notation, except for LFD (n.a. linefeed or newline character) and TAB

因此,^I上面输出的序列表示一个 TAB 字符,另外两个$字符表示行尾。

答案3

$ echo -n "$IFS" | od -abc
0000000  sp  ht  nl
        040 011 012
             \t  \n
0000003

http://www.fvue.nl/wiki/Bash:_Show_IFS_value

答案4

我知道这是一篇旧帖子,但另一个答案是我还没有看到发布的简单答案是以下命令

echo "${IFS@Q}" # which will result in the following (defaults)
' \t\n'

如果你只是使用

echo "$IFS" #Your result will be this

...显示不可见字符的空行并没有多大帮助。

希望这对 Aloha 有帮助

相关内容