你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

Linux——printf命令使用实例

[复制链接]
gaosmile 发布时间:2020-8-28 21:35
在编写shell脚本时,我们使用echo打印到标准输出。echo是一个简单的命令,但其功能有限,想要更好的控制输出格式,可以使用printf命令。
0 I. ]* Y% I7 I& r' ^' L6 F
printf的语法格式
# printf 格式 参数
+ k) ^, T+ P9 ], y# H( F! o5 }

$ Z' y& l9 m) b8 ]
下面是一个例子:; u, N# S  L+ {5 E" k# t0 f- A
[root@localhost ~]# printf "姓名:%s\n身高:%dcm\n体重:%dkg\n" "小明" "180" "75"& A) x0 K3 V0 N) |' [
姓名:小明
  q( i1 y$ h; [# R- ^身高:180cm: l" l  b" `" E! }" O
体重:75kg
# e+ k: K. V' N. }5 t7 ?
# _* I9 b; C( G0 i4 L8 F+ S% @
5 L3 e; |+ f/ t- K  p. N
6 {$ q+ |' l0 R. p2 o9 ?; K& U
微信图片_20200828213315.png

$ n7 `1 P+ h0 N$ j
"姓名:%s\n身高:%dcm\n体重:%dkg\n"是格式,"小明" "180" "75"是参数。格式包含了%s , %d都是格式转换符,%d对应的参数必须是十进制数。%s对应的参数必须是字符串。还包括了三个\n换行符,printf命令默认不会添加还行符号,需要手动添加。


( F! w0 m8 J# q2 b* w6 @


8 o3 Y* x: @) k" T6 u
常用的转义字符

# I0 b% B/ m6 n6 \1 h& d, {2 K
  • \" - 转义后的双引号
  • \\ - 转义后的反斜杠
  • \b - 退格符
  • \n - 换行符
  • \r - 回车符
  • \t - 水平制表符
  • \v - 垂直制表符
  • %% - 单个%符号, F0 d! z& s9 J4 W; [2 P

! u, P( }0 P9 G6 e$ U
常用的类型转换符
, x( M0 r0 O. G

类型转换说明符是一个字符,用于指定如何解释相应的参数,该字符是必须添加的,以下是显示所有类型转换及其作用的列表:

  • %d - 将参数打印为十进制整数
  • %f - 将参数打印为浮点数
  • %s - 将参数打印为字符串
  • %x - 将参数打印为十六进制整数
  • %o - 将参数打印为八进制整数+ b  K4 C$ ?# ^7 k2 b3 T5 L* ]) U

    / \% m6 J/ L' K. V; e) F
实    例
实例一& N- j6 [' m+ c, R7 a; p7 K# e
该例子使用%d,%x,%o将后面提供的参数转化为十进制、十六进制、八进制。
  m) D; ]9 b/ X, g; f# B[root@localhost ~]# printf "Decimal: %d\nHex: %x\nOctal: %o\n" 100 100 1001 z3 q6 a" B8 q9 B3 {  j
Decimal: 1005 H) I& j, d( [2 `+ R$ s( S
Hex: 646 Y1 e$ T6 Y5 O- w% q( G8 i- a
Octal: 144
/ X7 Z, L% Q' [7 ~9 x3 C3 B

+ L5 C+ c  v+ |# w6 v; s. i
2 ^* z& h3 Z# a+ m
实例二
. J8 ]2 d+ w# [) ^1 g; n下面例子使用%.2f,其中.2指参数保留两位小数,f将参数打印为浮点数。[root@localhost ~]# printf "%.2f\n" 3.1415926
* J2 M' r4 p/ r% v$ `2 l3.14
9 b5 [, n6 Q4 [: O6 `

0 w9 X2 @; R( i% y" S8 n. R
# R, b6 X9 {. k; j: k4 k6 }4 ]
实例三) Y' c3 \- s/ ?/ @' w
下面例子中使用了水平制表符\t。例子中给的参数超过了格式中给出的转换符的数量,多出的参数仍会按照格式输出。[root@localhost ~]# printf "%s \t %s \t %s\n" "姓名" "性别" "年龄" "小明" "男" "18" "小红" "女" "19" "小蓝" "男" "18"
9 E  n. g( j3 J& e$ u4 F姓名   性别   年龄3 p; l' s4 Z* u5 Y3 Y4 e; ]
小明   男   18
" {# K# @7 z. w$ p$ C9 Z/ N小红   女   199 k& D. K( l8 ?% F7 A
小蓝   男   18
* Y" ^2 f, u' P% @0 }) n+ y

7 N# {2 h$ n! m, N3 [
! }7 D" c6 c5 L: p& |; Y6 E
* D2 g+ r. }- h; P

微信图片_20200828213318.png

& _* X6 f; n/ a- z2 H
实例四
' V# Y% \8 U" ?# }  T$ [, X实例中,%-10s , %-8d其中-表示靠左对齐,默认情况下是靠右对齐。10和8表示占用10或者8个字符宽度。\e[1,30;47m ..... \e[0m表示使用粗体字、黑色字体、白色背景,后面的\e[0,m表示重置。
. P( n. r# n5 O: O[root@localhost ~]# cat p.sh
+ A9 K: ]" C/ {: C$ w/ c
0 N: R7 [) ?; Q' s5 ^2 y2 V! ?#!/bin/bash; \' \. i1 Z& S( f4 C, I5 l
printf "\e[1;30;47m%-10s %-10s\e[0m\n" "姓名" "年龄"
2 U& I% F% T2 _# _printf "\e[36;47m%-10s %-8d\e[0m\n" "小明" "18"
) Q# r9 j1 H% s, L7 r! F: U9 Iprintf "\e[31;47m%-10s %-8d\e[0m\n" "小红" "19"  P7 q6 q/ N; m' _1 S+ ~. @, _
printf "\e[34;47m%-10s %-8d\e[0m\n" "小蓝" "19"/ G% h, p1 j! C; k

! U% v9 H4 w. ]& Q
" X5 b. t( z% e9 u, T

& k: u  R# {5 ?1 p, {* |

微信图片_20200828213324.png


, y1 F0 b" M  v. t
总    结
本文到此结束,希望对你有帮助!
; H7 W8 Z, f, ]" {4 U4 [% M* o3 S" C" @  A8 {# `- h! |+ O
赞 收藏 评论0 发布时间:2020-8-28 21:35

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版