Почему $echo '-n'
не пишет -n
на терминале, хотя -n
пишется в одинарных кавычках?
эхо-подавление новой строки
Ответы (6)
Поскольку кавычки обрабатываются оболочкой, а команда echo
получает простое -n
. Если вы хотите повторить -n
, вы можете, например. printf '%s\n' -n
--
(конец опций) не поддерживается :(
- person extraneon; 15.04.2010
Я обнаружил, что в bash работает следующее:
echo -n PRINT_THIS
Итак, вы должны поставить -n на первое место.
вы должны попытаться использовать более портативный printf
, насколько это возможно.
Вы могли бы попробовать
echo -e '\055n'
Кавычки не помогают, потому что... тьфу, это трудно объяснить. Оболочка удаляет кавычки перед выполнением самой команды «echo», поэтому к тому времени они уже не имеют значения.
Попробуй это:
echo - -n
Это не задокументировано как работающее (я использую Ubuntu Linux), но echo
почти наверняка встроен в любую оболочку, которую вы используете, поэтому справочная страница в любом случае сомнительна. Это работает для меня. (Я работаю zsh
, потому что я очень учтивый и утонченный).
редактировать: похоже, встроенная функция bash
edit
ведет себя не так. Я не знаю, что предложить; это:
echo '' -n
даст вам «-n», которому предшествует пробел, что (в зависимости от того, что вы делаете) может быть в порядке.
- -n
- person extraneon; 15.04.2010
echo
обычно встроена в каждую из них, и точный синтаксис и функции могут различаться. Вероятно, вы используете оболочку по умолчанию, bash
, которая не работает так, как моя оболочка (zsh
).
- person Pointy; 15.04.2010
Не тише там:
echo -e 'a-n\b\b\b '
-n
на удивление это работает:
echo -e '-n\b'
-n
и вот решение, которое я могу объяснить:
echo "foobar" | sed 's/.*/-n/'
-n