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

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扩展软件包
关注我们
st-img 微信公众号
st-img 手机版