【发布时间】:2020-09-04 07:11:10
【问题描述】:
我注意到要在 shell 中打印 $IFS 变量的值,我必须执行以下操作:
$ printf '%s\nYour IFS is: %q' 'Hello' "$IFS"
Hello
Your IFS is: $' \t\n'
我的问题是为什么我需要以这种特殊方式传递IFS?例如,为什么(或为什么不)可以这样做:
-
$ echo $IFS-- 一些打印特殊字符的参数? -
$ printf "$IFS"或$ printf '$IFS'-- 为什么这些都不起作用? - 为什么
$ printf "%q" $IFS和$ printf "%q" '$IFS'不能正确显示,而$ printf "%q" "$IFS"可以?
【问题讨论】:
-
这取决于您将 IFS 设置为什么。与任何可打印的字符串一样,您可以通过
echo "$IFS"显示它(当然,您需要引用它)。尝试(在子shell 中)IFS=Z; echo "$IFS"; exit,您将看到一个x显示。但是,如果您有一个包含不可打印字符的变量,您将不会得到很多有趣的输出。这对于 IFS 和其他任何东西都是一样的。