我继续Ubuntu 12.04
。bash 4.2.25(1)-release
如果我使用
#!/bin/bash
echo -n 'test ' > text;
echo 'test2' >> text;
一切正常,输出为text
。test 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
的参数是-n
和test
。 没有其他的。 空格在这里消失了。 要保留它,您需要使用双引号$TEST
:
echo -n "$TEST" > text
也可以看看:引号和转义在 Bash Hackers 维基上。