变量末尾的空格在输出时被删除

变量末尾的空格在输出时被删除

我继续Ubuntu 12.04bash 4.2.25(1)-release如果我使用

#!/bin/bash
echo -n 'test ' > text;
echo 'test2' >> text;

一切正常,输出为texttest test2但如果我使用

#!/bin/bash
TEST='test ';
echo -n $TEST > text;
echo 'test2' >> text;

末尾的空格$TEST被删除,并text包含testtest2

为什么?我该如何避免这种情况?

答案1

正如往常一样,答案在于引用。

echo -n $TEST > text

这将扩展为:

echo -n test  > text

注意 后面的两个空格test。 唯一可见echo的参数是-ntest。 没有其他的。 空格在这里消失了。 要保留它,您需要使用双引号$TEST

echo -n "$TEST" > text

也可以看看:引号和转义在 Bash Hackers 维基上。

相关内容