为什么变量扩展没有显示任何内容?

为什么变量扩展没有显示任何内容?

为什么在以下情况下 $IFS 不产生任何结果:

$ echo $IFS

尽管

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

$ echo "$IFS" | od -bc
0000000 040 011 012 012
             \t  \n  \n
0000004

答案1

在:

echo $IFS

你没有双引号变量,在所有类似 Bourne 的 shell 中受 glob+split 运算符影响的变量内容,除了zsh

echo glob(split($IFS))

字符IFS本身用于拆分,因此$IFS扩展为空,您只得到一个空行echo

当您双引号 时"$IFS", 的内容IFS会按原样传递给 echo ,您会得到一个空格、制表符和换行符,它们是 的默认值IFS


%qcommand指令printfksh, bashand的扩展zsh,它将以可重用为 shell 输入的格式输出字符串,但对 shell 变量的扩展没有影响。

相关内容