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
Ответ 5
[[email protected] mail]# POSIXLY_CORRECT=1; export POSIXLY_CORRECT
[[email protected] mail]# /bin/echo "-e"
-e
[[email protected] mail]#
Ответ 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