Spec-Zone.ru › Fish 3.2

printf - отображение текста в соответствии со строкой форматирования

Синтаксис

printf FORMAT [ARGUMENT ...]

Описание

printf использует строку форматирования FORMAT для вывода аргументов ARGUMENT. Это означает, что он берет спецификаторы формата в строке форматирования и заменяет каждый из них аргументом.

Аргумент format используется столько раз, сколько необходимо, для преобразования всех заданных аргументов. Таким образом, printf %s\n flounder catfish clownfish shark выведет четыре строки.

В отличие от echo, printf не добавляет новую строку, если она не указана как часть строки.

Он не поддерживает никаких опций, поэтому нет необходимости в -- разделителе, что делает его более удобным для использования с произвольным вводом, чем echo. [1]

Спецификаторы формата

Допустимые спецификаторы формата взяты из функции C-библиотеки printf(3):

  • %d или %i: Аргумент будет использоваться как целое десятичное число (со знаком или без знака)
  • %o: Восьмеричное целое без знака
  • %u: Десятичное целое без знака — это означает, что отрицательные числа будут «заворачиваться»
  • %x или %X: Шестнадцатеричное целое без знака
  • %f, %g или %G: Вещественное число. %f по умолчанию имеет 6 знаков после десятичной точки (зависит от локали — например, в de_DE это будет ,). %g и %G уберут нули в конце и перейдут к экспоненциальной записи (как %e) при достаточно малых или больших числах.
  • %e или %E: Вещественное число в экспоненциальной (XXXeYY) записи
  • %s: Строка
  • %b: Как строка, интерпретирующая обратные слэши, за исключением того, что восьмеричные escapes имеют вид 0 или 0ooo.

%% обозначает литеральный "%".

Преобразование может завершиться ошибкой, например, "102.234" не может без потерь преобразовываться в целое число, что заставит printf вывести ошибку. Если вы согласны с потерей информации, подавите ошибки с помощью 2>/dev/null.

Число между % и символом формата указывает ширину. Результат будет дополняться пробелами слева.

Обратные слэши

printf также знает ряд обратных слэшей:

  • \" двойная кавычка
  • \\ обратный слэш
  • \a сигнал (звонок)
  • \b возврат на один символ назад
  • \c больше не выводить
  • \e escape
  • \f перевод страницы
  • \n новая строка
  • \r возврат каретки
  • \t горизонтальная табуляция
  • \v вертикальная табуляция
  • \ooo восьмеричное число (ooo — от 1 до 3 цифр)
  • \xhh шестнадцатеричное число (hhh — от 1 до 2 цифр)
  • \uhhhh 16-битный символ Unicode (hhhh — 4 цифры)
  • \Uhhhhhhhh 32-битный символ Unicode (hhhhhhhh — 8 цифр)

Ошибки и код возврата

Если заданный аргумент не подходит для данного формата (например, когда вы пытаетесь преобразовать число, например, 3.141592, в целое число), printf выводит ошибку в stderr. printf затем также вернёт ненулевое значение, но все равно попытается вывести столько, сколько сможет.

Он также вернёт ненулевое значение, если вообще не было предоставлено ни одного аргумента, в этом случае он ничего не выведет.

Этот printf импортирован из printf в GNU Coreutils версии 6.9. Если вы хотите использовать более новую версию printf, например, ту, что поставляется с вашей операционной системой, попробуйте command printf.

Пример

printf '%s\t%s\n' flounder fish

Выведет "flounder fish" (разделенные символом табуляции), после чего — символ новой строки. Это полезно для написания завершений, так как fish ожидает, что скрипты завершения выведут опцию и описание, разделённые символом табуляции.

printf '%s: %d' "Number of bananas in my pocket" 42

Выведет "Количество бананов в моём кармане: 42", without и новую строку.

См. также

  • команду echo для более простого вывода

Примечания

[1] (на самом деле, в то время как echo fish поддерживает --, POSIX это запрещает, поэтому другие реализации нельзя использовать, если ввод содержит что-либо, начинающееся с -)

© 2020 fish-shell developers
Licensed under the GNU General Public License, version 2.
https://fishshell.com/docs/3.2/cmds/printf.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API