Это не вопрос printf
по сравнению с echo
.
Я пытаюсь отредактировать свой сценарий для использования printf
исключительно, и у меня есть следующее в моем коде:
echo >&2 'Failed to initialize REPL repo. Please report this!'
Если я заменяю echo
с printf
, это представит какие-либо побочные эффекты (из-за >&2
)?
printf >&2 'Failed to initialize REPL repo. Please report this!\n'
Я не мог найти ответ в askubuntu. Или нет один или поиск, игнорирует >
и &
персонажи.
Перенаправление как >&2
функция оболочки, запускающей Ваш скрипт, программа, вывод которой перенаправляется, не важна для него. Да, если Вы только спрашиваете о перенаправлении, это - то же – Вы не должны волноваться об этом, если Вы не изменяете оболочку. См. руководство своей оболочки для получения дополнительной информации об этой функции, например. man bash
/ ПЕРЕНАПРАВЛЕНИЕ для bash
.
Существует хороший ответ о различиях между echo
и printf
на Unix & Linux: Почему printf лучше, чем эхо?
Что касается того, почему Вы не можете искать символы на AU, видеть это meta Вопросы и ответы: Как искать AU строку, содержащую “$”?
Если я заменю эхо printf, то оно представит какие-либо побочные эффекты (из-за> &2)?
>&2
часть не имеет никакого отношения также echo
ни printf
. >&
оператор перенаправления оболочки, где в этом случае он копирует stdout
(подразумеваемый, с хотя можно было сослаться явно 1>&2
) из команды к stderr
(дескриптор файла 2). Они могут появиться в любом порядке в команде в подобных границе оболочках. Единственная проблема, которая может произойти, с csh
оболочка и ее производные (см. связанное сообщение). Так, пока Вы используете подобные границе оболочки ( dash
, bash
, ksh
) необходимо быть в порядке.
Что касается printf
по сравнению с echo
обычно printf
предпочтен, потому что это более портативно. Посмотрите, Почему printf лучше, чем эхо?