在 backstick 中执行的命令输出中的字母“A,a”被空格替换,为什么?

在 backstick 中执行的命令输出中的字母“A,a”被空格替换,为什么?

这是我的 shell 缺少“a”字符的快照!!我正在运行 ubuntu 16.04

我的 shell 的快照

答案1

IFS如果您的变量中有 ,就会发生这种情况a。尝试以下命令:

$ echo "$IFS" # 注意:引号是重要的
                # 我猜测输出将是“a”,或者包含“a”的内容。
$ pwd # 我希望这会起作用。

$ echo "`pwd`" # 再次强调,引号很重要。
                # 我希望这也能给出正确的输出。

IFS是 shell 的列表内部F领域s分隔符。在对不带引号的参数扩展和命令替换进行分词时,出现在 中的任何字符都$IFS将被视为空格。

您的变量没有理由在其中IFS出现a;也就是说,如果发生了这种情况,我不知道为什么会发生这种情况。如果您启动一个新的命令窗口(即,xterm或您使用的任何命令窗口)并且问题消失,那么它就是大概本地化到您当前的命令窗口,并且它大概不会再出现。但是,如果新的命令窗口有同样的问题,那么您应该在文件中搜索(~/.*例如,,,,~/.bashrc等等)以查找命令。~/.bash_profile~/.profileIFS=something

相关内容