shell脚本中printf小节

该篇文章是我在网上转载的,现在拿来学习~

 printf命令模仿C程序库(library)里的printf()库程序library routine)。它几乎复制了

该函数的所有功能。不过在Shell层级的版本上,会有些差异。由于printf的行为是由POSIX

标准所定义,因此使用printf的脚本比使用echo移植性好

如同echo命令,printf命令可以输出简单的字符串:

[root@master ~]#printf "Hello, Shell\n"
Hello, Shell
[root@master ~]#

你应该可以马上发现,最大的不同在于:printf不像echo那样会自动提供一个换行符号。你必须显式

地将换行符号指定成\n


printf命令的完整语法有两个部分:

printf format-string [arguments...]

第一部分为描述格式规格的字符串,用来描述输出的排列方式,最好为此字符串加上引号。此字符

串包含按字面显示的字符以及格式声明,格式声明时特殊的占位符,用来描述如何显示相应的参数。

第二部分是与格式声明相对应的参数列表,例如一系列的字符串或变量值。格式声明由两部分组成:

百分比符号(%)和指示符。最常用的格式指示符有两个%s用于字符串,而%d用于十进制整数


格式字符串中,一般字符会按字面显示。转义序列则像echo那样,解释后再输出成相应的字符。格

式声明以%符号开头,并以定义的字母集中的一个来结束,用来控制相应参数的输出。例如%s用于

字符串的输出:

[root@master ~]# printf "The first program always prints'%s,%d\n'" Hello Shell

输出结果为:

-bash: printf: Shell: invalid number
The first program always prints 'Hello,0

'[root@master ~]#

当尝试以%d的格式来显示字符串Shell时,会发现有警告,提示Shell为无效的数字,此时会打印出

默认值0;从这个试验中可以看出来:%s, %s两侧的单引号''并不是必须的。


printf的转义序列

序列                     说明

\a                        警告字符,通常为ASCIIBEL字符

\b                       后退

\c                       抑制(不显示)输出结果中任何结尾的换行字符(只在%b格式指示符控制下的

                         参数字符串中有效),而且,任何留在参数里的字符、任何接下来的参数以及

                         任何留在格式字符串中的字符,都被忽略

  • 8
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值