首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
函数参数与返回值
传递变长参数
defer 和追踪
内置函数
递归函数
将函数作为参数
闭包
应用闭包:将函数作为返回值
使用闭包调试
计算函数执行时间
通过内存缓存来提升性能
声明和初始化
切片
For-range 结构
切片重组(reslice)
切片的复制与追加
字符串、数组和切片的应用
声明、初始化和 make
测试键值对是否存在及删除元素
for-range 的配套用法
map 类型的切片
map 的排序
将 map 的键值对调
标准库概述
regexp 包
锁和 sync 包
精密计算和 big 包
自定义包和可见性
为自定义包使用 godoc
使用 go install 安装自定义包
自定义包的目录结构、go install 和 go test
通过 Git 打包和安装
Go 的外部包和项目
在 Go 程序中使用外部库
结构体定义
使用工厂方法创建结构体实例
使用自定义包中的结构体
带标签的结构体
匿名字段和内嵌结构体
方法
类型的 String() 方法和格式化描述符
垃圾回收和 SetFinalizer
当前位置:
首页>>
技术小册>>
go编程权威指南(二)
小册名称:go编程权威指南(二)
**Shell printf 命令** 上一章节我们学习了 Shell 的 echo 命令,本章节我们来学习 Shell 的另一个输出命令 printf。 printf 命令模仿 C 程序库(library)里的 printf() 程序。 printf 由 POSIX 标准所定义,因此使用 printf 的脚本比使用 echo 移植性好。 printf 使用引用文本或空格分隔的参数,外面可以在 printf 中使用格式化字符串,还可以制定字符串的宽度、左右对齐方式等。默认 printf 不会像 echo 自动添加换行符,我们可以手动添加 \\n。 printf 命令的语法: printf format\-string \[arguments...\] **参数说明:** * **format-string:** 为格式控制字符串 * **arguments:** 为参数列表。 ------------ 示例: ```bash $ echo "Hello, Shell" Hello, Shell $ printf "Hello, Shell\n" Hello, Shell $ ``` ------------ 示例2: ```bash #!/bin/bash printf "%-10s %-8s %-4s\n" 姓名 性别 体重kg printf "%-10s %-8s %-4.2f\n" 郭靖 男 66.1234 printf "%-10s %-8s %-4.2f\n" 杨过 男 48.6543 printf "%-10s %-8s %-4.2f\n" 郭芙 女 47.9876 ``` %s %c %d %f 都是格式代替符,%s 输出一个字符串,%d 整型输出,%c 输出一个字符,%f 输出实数,以小数形式输出。 %-10s 指一个宽度为 10 个字符(- 表示左对齐,没有则表示右对齐),任何字符都会被显示在 10 个字符宽的字符内,如果不足则自动以空格填充,超过也会将内容全部显示出来。 %-4.2f 指格式化为小数,其中 .2 指保留2位小数。 输出结果: ```bash magento@~/shellscript$ ./test.sh 姓名 性别 体重kg 郭靖 男 66.12 杨过 男 48.65 郭芙 女 47.99 ``` ------------ 示例3 ```bash #!/bin/bash # format-string为双引号 printf "%d %s\n" 1 "abc" # 单引号与双引号效果一样 printf '%d %s\n' 1 'abc' # 没有引号也可以输出 printf %s abcdef # 格式只指定了一个参数,但多出的参数仍然会按照该格式输出,format-string 被重用 printf %s abc def printf "%s\n" abc def printf "%s %s %s\n" a b c d e f g h i j # 如果没有 arguments,那么 %s 用NULL代替,%d 用 0 代替 printf "%s and %d \n" ``` ------------ **printf 的转义序列** | 序列 | 说明 | | --- | --- | | \\a | 警告字符,通常为ASCII的BEL字符 | | \\b | 后退 | | \\c | 抑制(不显示)输出结果中任何结尾的换行字符(只在%b格式指示符控制下的参数字符串中有效),而且,任何留在参数里的字符、任何接下来的参数以及任何留在格式字符串中的字符,都被忽略 | | \\f | 换页(formfeed) | | \\n | 换行 | | \\r | 回车(Carriage return) | | \\t | 水平制表符 | | \\v | 垂直制表符 | | \\\\ | 一个字面上的反斜杠字符 | | \\ddd | 表示1到3位数八进制值的字符。仅在格式字符串中有效 | | \\0ddd | 表示1到3位的八进制值字符 | ------------ 示例: ```bash $ printf "a string, no processing:<%s>\n" "A\nB" a string, no processing:<A\nB> $ printf "a string, no processing:<%b>\n" "A\nB" a string, no processing:<A B> ## %b 可以对字符串转义字符时行转义。 ```
上一篇:
shell编程-echo命令
下一篇:
shell编程-test命令
该分类下的相关小册推荐:
Go-Web编程实战
深入浅出Go语言核心编程(五)
go编程权威指南(一)
Go开发基础入门
深入浅出Go语言核心编程(六)
Go开发权威指南(下)
深入解析go语言
Go语言入门实战经典
Go进阶之分布式爬虫实战
GO面试指南
从零写一个基于go语言的Web框架
Go Web编程(上)