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

Linux——printf命令使用实例

[复制链接]
gaosmile 发布时间:2020-8-28 21:35
在编写shell脚本时,我们使用echo打印到标准输出。echo是一个简单的命令,但其功能有限,想要更好的控制输出格式,可以使用printf命令。

printf的语法格式
# printf 格式 参数

下面是一个例子:
[root@localhost ~]# printf "姓名:%s\n身高:%dcm\n体重:%dkg\n" "小明" "180" "75"
姓名:小明
身高:180cm
体重:75kg



微信图片_20200828213315.png


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



常用的转义字符

  • \" - 转义后的双引号
  • \\ - 转义后的反斜杠
  • \b - 退格符
  • \n - 换行符
  • \r - 回车符
  • \t - 水平制表符
  • \v - 垂直制表符
  • %% - 单个%符号

常用的类型转换符

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

  • %d - 将参数打印为十进制整数
  • %f - 将参数打印为浮点数
  • %s - 将参数打印为字符串
  • %x - 将参数打印为十六进制整数
  • %o - 将参数打印为八进制整数

实    例
实例一
该例子使用%d,%x,%o将后面提供的参数转化为十进制、十六进制、八进制。
[root@localhost ~]# printf "Decimal: %d\nHex: %x\nOctal: %o\n" 100 100 100
Decimal: 100
Hex: 64
Octal: 144


实例二
下面例子使用%.2f,其中.2指参数保留两位小数,f将参数打印为浮点数。[root@localhost ~]# printf "%.2f\n" 3.1415926
3.14


实例三
下面例子中使用了水平制表符\t。例子中给的参数超过了格式中给出的转换符的数量,多出的参数仍会按照格式输出。[root@localhost ~]# printf "%s \t %s \t %s\n" "姓名" "性别" "年龄" "小明" "男" "18" "小红" "女" "19" "小蓝" "男" "18"
姓名   性别   年龄
小明   男   18
小红   女   19
小蓝   男   18



微信图片_20200828213318.png


实例四
实例中,%-10s , %-8d其中-表示靠左对齐,默认情况下是靠右对齐。10和8表示占用10或者8个字符宽度。\e[1,30;47m ..... \e[0m表示使用粗体字、黑色字体、白色背景,后面的\e[0,m表示重置。
[root@localhost ~]# cat p.sh

#!/bin/bash
printf "\e[1;30;47m%-10s %-10s\e[0m\n" "姓名" "年龄"
printf "\e[36;47m%-10s %-8d\e[0m\n" "小明" "18"
printf "\e[31;47m%-10s %-8d\e[0m\n" "小红" "19"
printf "\e[34;47m%-10s %-8d\e[0m\n" "小蓝" "19"



微信图片_20200828213324.png


总    结
本文到此结束,希望对你有帮助!

收藏 评论0 发布时间:2020-8-28 21:35

举报

0个回答

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版