1

Я на 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 ответ1

3

Как всегда, ответ заключается в цитировании.

echo -n $TEST > text

Это будет расширено до:

echo -n test  > text

Обратите внимание на два пробела после test . echo видит только аргументы -n и test . Ничего больше. Пространство теряется здесь. Чтобы сохранить это, вам нужно заключить в кавычки $TEST

echo -n "$TEST" > text

Смотрите также: Цитаты и побег на вики Bash Hackers.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .