转自:https://ss64.com/bash/printf.html
printf
Format and print data.
Write the formatted arguments to the standard output under the control of the format.
Syntax
printf format [argument]...
printf --help
printf --version
Options
The format characters and their meanings are:
\" double quote
\0NNN character with octal value NNN (0 to 3 digits)
\\ backslash
\a alert (BEL)
\b backspace
\c produce no further output
\f form feed
\n new line
\r carriage return
\t horizontal tab
\v vertical tab
\xNNN byte with hexadecimal value NNN (1 to 3 digits)
\uNNNN character with hexadecimal value NNNN (4 digits)
\UNNNNNNNN
character with hexadecimal value NNNNNNNN (8 digits)
%% a single %
%b ARGUMENT as a string with `\' escapes interpreted
%Wd Integer `W' digits wide xxxx
%W.De Scientific notation x.xxxx e nnn. float, double
%W.Df Fixed format xx.xxxx. float, double
%W.Dg Variable `W' digits wide,`D' decimals xxxx.xx
%q Output the corresponding argument in a format that can be
reused as shell input
%s Character string char
and all C format specifications ending with one of diouxXfeEgGcs, with
ARGUMENTs converted to proper type first. Variable widths are handled.
e.g. `\0ooo' = an octal number, `\xhhh' = a hex number
The format is a character string which contains three types of objects:
- Plain characters, which are simply copied to standard output,
- Character escape sequences, which are converted and copied to standard output,
- Format specifications, each of which causes printing of the next successive argument.
The format is reused as necessary to consume all of the arguments. If the format requires more arguments than are supplied, the extra format specifications behave as if a zero value or null string, as appropriate, had been supplied.
The return value is zero on success, non-zero on failure.
Examples
Print the decimal number 5 followed by a newline (\n)
printf "%d\n" 5
# 5
Print as float (default 6 decimal places)
printf "%f\n" 5
# 5.000000
Print text followed by variable $USER
printf "Hello, $USER.\n\n"
Print multiple lines
printf %s "\
with quotes we can echo
several lines at a time
"
Display variables
distance=15
printf "Distance is %5d Miles\n" $distance
# Distance is 15 Miles
Echo a list of numbers from 1 to 100, adding 3 digits of Zero padding so they appear as 001, 002, 003 etc:
for ((num=1;num<=100;num+=1)); do echo `printf "%03d" $num`; done
Use \n anywhere to start a new line:
printf "Two separate\nlines\n"
# Two separate
# lines
Print decimal numbers interspersed with text
printf "There are %d orders valued at over %d euros.\n" 64 1500
# There are 64 orders valued at over 1500 euros.
Print text interspersed with command results
printf "This is `uname -s` running on a `uname -m` processor.\n\n"
Convert a hex number to decimal
$ printf "%d\n " 0xF
15
Convert a decimal number to Hex
printf "0x%X\n " 15
# 0xF
Convert a decimal number to Octal
printf "0%o\n " 8
# 010
Convert an Octal number to decimal
printf "%d\n " 010
# 8
“Fortune favours the bold, Fortune favours the brave” ~ Latin proverb
1215

被折叠的 条评论
为什么被折叠?



