bash 变量吃掉多个空格,将它们变成一个

bash variable eats multiple spaces, turning them to one

# export var="many      spaces"; echo =${var}=
=many spaces=

这是怎么回事? 为什么乘法空间变成一个?如何全部保留?

您只是缺少变量周围的引号。将您的代码更改为:

$ export var="many      spaces"; echo ="${var}"=
=many      spaces=

应该会给出您要查找的结果。您需要注意的 bash 的一个“特性”是分词,它基于您的 IFS(内部字段分隔符)变量的值。通常 IFS 默认为

IFS=$' \t\n'

因此您需要小心引用包含空格、制表符和换行符的变量。