Что лучше printf или echo?

Для отображения сообщений и данных печати доступны две команды printf и echo.
Тогда как по-другому они использовали? Что предпочтительнее?

15
задан 17 May 2014 в 09:23

2 ответа

Предпочтительный и наиболее широко используемый не то же самое. В то время как printf лучше по многим причинам, большинство людей все еще использует echo потому что синтаксис более прост.

Главные причины, почему необходимо предпочесть printf :

  1. echo не стандартизирован, это будет вести себя по-другому в различных системах.
  2. Трудно предсказать то, что Вы на самом деле выполняете когда Вы echo foo. Проиллюстрировать, в моей системе Debian:

    $ type -a echo
    echo is a shell builtin
    echo is /bin/echo
    

    Как Вы видите, существует два различных echo команды, каждый - оболочка (удар в этом случае) встроенный, и другой - отдельный двоичный файл. Отметьте это bash также имеет a printf встроенный, но его поведение более стандартизирован так, это - меньше проблемы (благодаря RaduRădeanu для указания на него).

  3. Начиная с некоторых (но не все) реализации echo поддерживайте переключатели командной строки, трудно распечатать строку, которая запускается с a -. В то время как много программ поддерживают -- показать конец переключателей и начало аргументов (например, grep -- -a file найдет строки в file это содержит -a), echo не делает. Так, как Вы имеете echo печать -n?

    $ echo -n           ## no output
    $ echo '-n'         ## no output
    $ echo "-n"         ## no output
    $ echo \-n          ## no output
    $ echo -e '\055n'   ## using the ASCII code works but only on implementations
    -n                  ## that support -e
    

    printf может сделать это легко:

    $ printf -- '-n\n'
    -n
    $ printf '%s\n' -n
    -n
    $ printf '\055n\n' 
    -n
    

Для получения дополнительной информации, чем Вы когда-либо хотел знать на почему printf лучше, чем echo, см. этот ответ на подобный вопрос на http://unix.stackexchange.com:

https://unix.stackexchange.com/a/65819/22222

26
ответ дан 17 May 2014 в 09:23

Спросить, который предпочтителен, является самостоятельно неполным.

, Если все каждый хочет сделать, испускают одну или несколько строк текста завершенный новыми строками , то отзываются эхом, достаточен. Если что-либо более умное предназначается, конкретно включая "частичную строку", которая не имеет новой строки, то printf лучший с этой целью .

0
ответ дан 17 May 2014 в 09:23

Другие вопросы по тегам:

Похожие вопросы: