2.6 KiB
2.6 KiB
printf
格式化并输出结果
补充说明
printf命令 格式化并输出结果到标准输出。
语法
printf(选项)(参数)
--help:在线帮助;
--version:显示版本信息。
参数
- 输出格式:指定数据输出时的格式;
- 输出字符串:指定要输出的数据。
格式替代符
- %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
- %% 字面意义的%
转义序列
- \a 警告字符,通常为ASCII的BEL字符
- \b 后退
- \c 抑制(不显示)输出结果中任何结尾的换行字符(只在%b格式指示符控制下的参数字符串中有效),而且,任何留在参数里的字符、任何接下来的参数以及任何留在格式字符串中的字符,都被忽略
- \f 换页(formfeed)
- \n 换行
- \r 回车(Carriage return)
- \t 水平制表符
- \v 垂直制表符
- \\ 一个字面上的反斜杠字符
- \ddd 表示1到3位数八进制值的字符,仅在格式字符串中有效
- \0ddd 表示1到3位的八进制值字符
实例
printf "hello world"
#!/bin/bash
printf "%-5s %-10s %-4s\n" NO Name Mark
printf "%-5s %-10s %-4.2f\n" 01 Tom 90.3456
printf "%-5s %-10s %-4.2f\n" 02 Jack 89.2345
printf "%-5s %-10s %-4.2f\n" 03 Jeff 98.4323
- %-5s 格式为左对齐且宽度为5的字符串代替(-表示左对齐),不使用则是右对齐。
- %-4.2f 格式为左对齐宽度为4,保留两位小数。
按行打印数组和关联数组的下标及值
#!/bin/bash
#声明数组(array)可以不加 'declare -a' 或 'local -a'(在函数内声明的局部变量)
array1=('line1' 'line2')
#声明关联数组(也就是字典)必须加 'declare -A' 或 'local -A'(在函数内声明的局部变量)
declare -A assoc_array1=(['key1']='value1' ['key2']='value2')
printf "%s\n" ${array1[@]}
#line1
#line2
printf "%s\n" ${!array1[@]}
#0
#1
printf "%s\n" ${assoc_array1[@]}
#value2
#value1
printf "%s\n" ${!assoc_array1[@]}
#key2
#key1