Echo "-e" ничего не печатает

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

echo "-e" 

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

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

Ответ 1

Это тяжело:)

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

$ echo -- -e
-- -e

Вы можете использовать -e для решения проблемы:

$ echo -e '\055e'
-e

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

$ POSIXLY_CORRECT=1 /bin/echo -e
-e

Ответ 2

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

printf "%s" "$vars"

Ответ 3

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

printf -- "-e\n"

Ответ 4

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

echo "-e "

Это будет тире, е, пробел.

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

echo -e \\\\x2De

Ответ 6

После тщательного изучения страницы руководства:)

SYSV3=1 /usr/bin/echo -e

работает, по крайней мере, на Solaris

Ответ 7

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

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

Это метод, рекомендованный руководство autoconf:

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

Ответ 8

Мне нравится тот, у кого есть herestring:

cat <<<"-e"

Ответ 9

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

echo -e' '
echo -e " \b-e"

Ответ 10

/bin/echo -e

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

[[email protected] ~]$ which echo 
/bin/echo