Příkaz printf
je dostupný jen v moderních shellech (je dostupný v bash
). Podle specifikace X/Open byste mu při vytváření formátovaného výstupu měli dávat přednosti před příkazem echo
. Jeho syntaxe je:
printf "formátovací řetězec" parametr1 parametr2 ...
Formátovací řetězec je (s určitými omezeními) podobný formátovacímu řetězci v jazyce C či C++. Především nejsou podporovány reálné proměnné, přotože veškerá aritmetika v shellu probíhá v oboru celých čísel. Formátovací řetězec je tvořen libovolnou kombinací písme, řídících sekvencí a konverzních specifikátorů. Všechny jiné znaky než % a \ se na výstupu objeví v původní podobě.
Jsou podporovány následující řídící sekvence:
Popis | |
\\ | Znak zpětné lomítko |
\a | Varování (pípnutí) |
\b | Znak zpětné lomítko |
\b | Znak vysunutí stránky |
\n | Znak nový řádek |
\r | Návrat vozíku |
\t | Znak tabulátor |
\v | Znak vertikální tabulátor |
\ooo | Znak, jehož osmičková hodnota je ooo. |
Konverzní specifikátor je o něco složitější, takže zde uvedeme jen běžně používané parametry. Další podrobnosti najdete v manuálu. Konverzní specifikátor je tvořen znakem % následovaným konverzním znakem. Základní konverze jsou tyto:
Popis | |
d | Vypíše desítkové číslo |
c | Vypíše znak |
s | Vypíše řetězec |
% | Vypíše znak % |
Formátovací řetězec je pak použit k interpretaci zbylých paramterů a výstupu výsledku. Například:
xconsole$ printf "%s\n" hello
hello
xconsole printf "%s %d\t%s" "Hi there" 15 people
Hi There 15 people