echo "-e" ничего не печатает - PullRequest
11 голосов
/ 26 ноября 2008

Я использую GNU bash, версия 3.00.15 (1) -релиз (x86_64-redhat-linux-gnu). И эта команда:

echo "-e" 

ничего не печатает. Я думаю, это потому, что "-e" является одним из допустимых параметров команды echo, потому что echo "-n" и echo "-E" (два других параметра) также создают пустые строки.

Вопрос в том, как избежать последовательности "-e" для эха, чтобы получить естественный вывод ("-e").

Ответы [ 10 ]

14 голосов
/ 06 апреля 2010

Единственный верный способ напечатать любую произвольную строку:

printf "%s" "$vars"
12 голосов
/ 26 ноября 2008

Это сложный вопрос;)

Обычно вы используете двойные черточки, чтобы сообщить команде, что она должна прекратить интерпретацию параметров, но echo выдаст только те:

$ echo -- -e
-- -e

Вы можете использовать -e сам, чтобы обойти проблему:

$ echo -e '\055e'
-e

Кроме того, как уже указывали другие, если вы не настаиваете на использовании встроенного в bash echo, ваш двоичный файл /bin/echo может быть версией инструмента GNU (проверьте страницу руководства) и, следовательно, понимать 1011 * переменная окружения:

$ POSIXLY_CORRECT=1 /bin/echo -e
-e
5 голосов
/ 26 ноября 2008

Возможно, есть лучший способ, но это работает:

printf -- "-e\n"
4 голосов
/ 26 ноября 2008

Вы можете обмануть, сделав

echo "-e "

Это было бы тире, е, пробел.

В качестве альтернативы вы можете использовать более сложный, но более точный:

echo -e \\\\x2De
1 голос
/ 08 июля 2013

Мне нравится тот, который использует здесь:

cat <<<"-e"
1 голос
/ 30 ноября 2008

Другая альтернатива:

echo x-e | sed 's/^x//'

Этот способ рекомендуется в руководстве по автоматической настройке :

[...] Часто можно избежать этой проблемы, используя 'echo "x $ word"', принимая во внимание 'x' позже в трубе.

1 голос
/ 26 ноября 2008

После внимательного изучения справочной страницы:)

SYSV3=1 /usr/bin/echo -e

работает, на Солярисе минимум

1 голос
/ 26 ноября 2008
 
[root@scintia mail]# POSIXLY_CORRECT=1; export POSIXLY_CORRECT
[root@scintia mail]# /bin/echo "-e"
-e
[root@scintia mail]#
0 голосов
/ 26 ноября 2008
/bin/echo -e

работает, но почему?

[resin@nevada ~]$ which echo 
/bin/echo
0 голосов
/ 26 ноября 2008

Другой способ:

echo -e' '
echo -e " \b-e"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...