Поскольку кавычки обрабатываются оболочкой, и команда echo
получает простой -n
. Если вы хотите echo -n
, вы можете, например, printf '% s \ n' -n
Не успокаивайтесь:
echo -e 'a-n\b\b\b '
-n
на удивление это работает:
echo -e '-n\b'
-n
и вот решение, которое я могу объяснить:
echo "foobar" | sed 's/.*/-n/'
-n
вам следует по возможности использовать более портативный printf
.
Цитаты не помогают, потому что ... тьфу, это сложно объяснить. Оболочка удаляет кавычки перед вычислением самой команды "echo", поэтому к этому времени они не имеют значения.
Попробуйте следующее:
echo - -n
Это не задокументировано как работающее (я использую Ubuntu Linux), но echo
почти наверняка встроено в любую используемую вами оболочку, поэтому страница руководства в любом случае сомнительно. У меня это действительно работает. (Я использую zsh
, потому что я действительно учтивый и искушенный).
edit : похоже, встроенная bash
встроенная edit
работает иначе. Я не знаю, что предложить; this:
echo '' -n
даст вам "-n" перед пробелом, что (в зависимости от того, что вы делаете) может быть нормальным.