shell printf命令:格式化输出语句

shell printf命令:格式化输出语句
注意:使用printf的脚本比使用echo移植性好。
如同echo命令,printf命令可以输出简单的字符串:
[root@master ~]#printf "Hello, Shell\n"
Hello, Shell
printf不像echo那样会自动提供一个换行符号。你必须显式地将换行符号指定成\n。
printf命令的完整语法有两个部分:
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
当尝试以%d的格式来显示字符串Shell时,会发现有警告,提示Shell为无效的数字,此时会打印出默认值0;从这个试验中可以看出来:%s, %s两侧的单引号''并不是必须的。
printf的转义序列:
\a 警告字符,通常为ASCII的BEL字符
\b 后退
\c 抑制(不显示)输出结果中任何结尾的换行字符(只在%b格式指示符控制下的参数字符串中有效),而且,任何留在参数里的字符、任何接下来的参数以及任何留在格式字符串中的字符,都被忽略
\f 换页(formfeed)
\n 换行
\r 回车(Carriage return)
\t 水平制表符
\v 垂直制表符
\ 一个字面上的反斜杠字符
\ddd 表示1到3位数八进制值的字符。仅在格式字符串中有效
\0ddd 表示1到3位的八进制值字符
默认情况下,转义序列只在格式字符串中会被特别对待,也就是说,如果转义序列出现在参数列表的字符串中,将不会被解释:
[root@master ~]#printf "a string, no processing:<%s>\n" "A\nB"
当你使用%b格式指示符时,printf会解释参数字符串里的转义序列:
[root@master ~]#printf "a string, no processing:<%b>\n" "A\nB"
无论时在格式字符串内还是在使用%b所打印的参数字符串里,大部分的转义序列都是被相同对待。无论如何,\c与\0ddd只有搭配%b使用才有效,而\ddd只有在格式字符串里才会被解释。
printf格式指示符
%b 相对应的参数被视为含有要被处理的转义序列之字符串。
%c ASCII字符。显示相对应参数的第一个字符
%d, %i 十进制整数
%e 浮点格式
%E 浮点格式
%f 浮点格式
%g %e或%f转换,看哪一个较短,则删除结尾的零
%G %E或%f转换,看哪一个较短,则删除结尾的零
%o 不带正负号的八进制值
%s 字符串
%u 不带正负号的十进制值
%x 不带正负号的十六进制值,使用a至f表示10至15
%X 不带正负号的十六进制值,使用A至F表示10至15
%% 字面意义的%
根据POSIX标准:浮点格式%e、%E、%f、%g与%G是“不需要被支持”。这是因为awk支持浮点预算,且有它自己的printf语句。这样Shell程序中需要将浮点数值进行格式化的打印时,可使用小型的awk程序实现。然而,内建于bash、ksh93和zsh中的printf命令都支持浮点格式。
数值精度的定义精度的意义:
%d,%i,%o,%u,%x,%X 要打印的最小位数。当值的位数小于此数字时,会在前面补零。默认精度(precision)为1
%e,%E 要打印的最小位数。当值的位数小于此数字时,会在小数点后面补零,默认精度为6.精度为0时则表示不显示小数点
%f 小数点右边的位数
%g,%G 有效位数(significant digit)的最大数目
%s 要打印字符的最大数目

转载于:https://blog.51cto.com/amazing61/2063846

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/284378.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

UVa 10905 孩子们的游戏

https://vjudge.net/problem/UVA-10905 题意&#xff1a; 给定n个正整数&#xff0c;把它们连接成一个最大的整数。 思路&#xff1a; 实在是没想到直接用string来排序了。 1 #include<iostream> 2 #include<algorithm>3 #include<string>4 using namespace …

laravel 内部验证码

为什么80%的码农都做不了架构师&#xff1f;>>> 1.找到此文件composer.json 如下图添加 "gregwar/captcha": "1.*" 行代码 2.在命令行中执行 composer update 安装完成后 3.找到控制器添加如下代码 public function captcha($tmp) {//生成验证…

k8s docker集群搭建

一、Kubernetes系列之介绍篇 1.背景介绍 云计算飞速发展 - IaaS - PaaS - SaaS Docker技术突飞猛进 - 一次构建&#xff0c;到处运行 - 容器的快速轻量 - 完整的生态环境 2.什么是kubernetes 首先&#xff0c;他是一个全新的基于容器技术的分布式架构领先方案。Kubernetes(k8…

leetcode 66 Plus One

给定一个数组&#xff0c;表示整数的各个位数&#xff0c;现要将其加上1&#xff0c;考虑进位。 vector<int> plusOne(vector<int>& digits) {int size digits.size();bool carry true;for (int i size - 1; i > 0; --i) {if (digits[i] 9 && c…

如何让最小 API 绑定查询字符串中的数组

前言在上次的文章中&#xff0c;我们实现了《让 ASP.NET Core 支持绑定查询字符串中的数组》&#xff1a;[HttpGet] public string Get([FromQuery][ModelBinder(BinderType typeof(IntArrayModelBinder))] int[] values) {return string.Join(" ", values.Select(p…

Kubernetes api-server源码阅读2(Debug Kubernetes篇)

云原生学习路线导航页&#xff08;持续更新中&#xff09; 本文是 Kubernetes api-server源码阅读 系列第二篇&#xff0c;主要讲述如何实现 kubernetes api-server 的 debug 参考b站视频地址&#xff1a;Kubernetes源码开发之旅二 1.本篇章任务 Go-Delve&#xff1a;go语言的…

webrtc 视频 demo

webrtc 视频 demo webrtc网上封装的很多&#xff0c;demo很多都是一个页面里实现的&#xff0c;今天实现了个完整的 &#xff0c; A 发视频给 BA webrtc.html作为offer <!DOCTYPE html> <html id"home" lang"en"><head><meta http-e…

条件注释判断浏览器版本!--[if lt IE 9](转载)

<!--[if !IE]><!--> 除IE外都可识别 <!--<![endif]--> <!--[if IE]> 所有的IE可识别 <![endif]--> <!--[if IE 6]> 仅IE6可识别 <![endif]--> <!--[if lt IE 6]> IE6以及IE6以下版本可识别 <![endif]--> <!--[if …

[转]阿里开源低代码引擎LowCodeEngine

一、什么是低代码引擎 低代码引擎是具备强大扩展能力的低代码研发框架&#xff0c;使用者只需要基于低代码引擎便可以快速定制符合自己业务需求的低代码平台。同时&#xff0c;低代码引擎还在标准低代码设计器的基础上提供了简单易用的定制扩展能力&#xff0c;能够满足业务独特…

Beyond Istio OSS——Istio服务网格的现状与未来

作者&#xff1a;宋净超&#xff08;Jimmy Song&#xff09;&#xff0c;原文地址&#xff1a;https://jimmysong.io/blog/beyond-istio-oss/本文根据笔者在 GIAC 深圳 2022 年大会上的的演讲《Beyond Istio OSS —— Istio 的现状及未来》[1] 整理而成&#xff0c;演讲幻灯片见…

js多维数组扁平化

数组扁平化&#xff0c;就是将多维数组碾平为一维数组&#xff0c;方便使用。 一&#xff1a;例如&#xff0c;一个二维数组 var arr [a, [b, 2], [c, 3, x]]&#xff0c;将其扁平化&#xff1a; 1. 通过 apply 借用数组的 concat 方法&#xff1a; [].concat.apply([], arr)…

第16讲 用户程序的结构与执行

转载于:https://www.cnblogs.com/atuo/p/5609843.html

两种方法清除Excel保护密码

一、利用VBA脚本直接清除 打Excel&#xff0c;打开脚本编辑器&#xff08;AltF11&#xff09;或者如图&#xff0c;右键sheet名称 输入代码并运行&#xff0c;即可清除密码保护&#xff1a; Sub DeletePW()ActiveSheet.Protect DrawingObjects:True, Contents:True, AllowFil…

jsonp-反向代理-CORS解决JS跨域问题的个人总结

jsonp-反向代理-CORS解决JS跨域问题的个人总结 网上说了很多很多&#xff0c;但是看完之后还是很混乱&#xff0c;所以我自己重新总结一下。解决 js 跨域问题一共有8种方法&#xff0c; jsonp&#xff08;只支持 get&#xff09;反向代理CORSdocument.domain iframe 跨域windo…

URAL 1682 Crazy Professor (并查集)

【题目链接】 http://acm.timus.ru/problem.aspx?space1&num1682 【题目大意】 给出k&#xff0c;从1开始不断地加一并把这个数写在黑板上&#xff0c;如果写上的数字和之前的数字满足   (ab*b)%k0或者(ba*a)%k0就在他们之间连一条线&#xff0c;如果黑板上出现环就结束…

利用Python随机或暴力生成密码

""" Title: python 密码生成 Author: JackieZheng Date: 2022-04-09 12:47:33 LastEditTime: 2022-04-09 14:00:46 LastEditors: Please set LastEditors Description: FilePath: \\pythonCode\\python_pwd_generater.py """import itertools im…

EasyNetQ-用于使用 RabbitMQ 的 .NET API开源的工具库

Part1介绍EasyNetQ 的目标是提供一个库&#xff0c;用于在 .NET 中使用 RabbitMQ 尽可能简单。为了做到这一点&#xff0c;它通过强制执行一些简单的约定来以灵活性换取简单性。这些包括&#xff1a;消息应该由 .NET 类型表示。消息应按其 .NET 类型进行路由。这意味着消息是由…

python 中 __name__ 的使用

1. 如果模块是被导入&#xff0c;__name__的值为模块名字2. 如果模块是被直接执行&#xff0c;__name__的值为’__main__’Py1.py #&#xff01;/usr/bin/env python def test():print __name__ ,__name__ if __name__ __main__:test() Py2.py #&#xff01;/usr/bin/env pyt…

第6章 循环

6.1 range 函数用来创建一个数字列表&#xff0c;它的范围是从起始数字开始到结束数字之前 1 >>> for x in range(0,5): 2 print(Hello %s % x) 3 4 Hello 0 5 Hello 1 6 Hello 2 7 Hello 3 8 Hello 4 1 >>> print(list(range(10,20))) 2 [10, 11, 12, …

C# 实例解释面向对象编程中的依赖反转原则

在面向对象编程中&#xff0c;SOLID 是五个设计原则的首字母缩写&#xff0c;旨在使软件设计更易于理解、灵活和可维护。这些原则是由美国软件工程师和讲师罗伯特C马丁(Robert Cecil Martin)提出的许多原则的子集&#xff0c;在他2000年的论文《设计原则与设计模式》中首次提出…