printf

概要

主要用途

  • 格式化参数并输出。

选项

参数

format:输出格式。

arguments:一到多个参数。

返回值

返回状态为成功除非给出了非法选项、写错误、赋值错误。

例子

  1. # %-5s 格式为左对齐且宽度为5的字符串代替('-'表示左对齐),不使用则默认右对齐。
  2. # %-4.2f 格式为左对齐宽度为4,保留两位小数。
  3. printf "%-5s %-10s %-4s\n" NO Name Mark
  4. printf "%-5s %-10s %-4.2f\n" 01 Tom 90.3456
  5. printf "%-5s %-10s %-4.2f\n" 02 Jack 89.2345
  6. # 输出
  7. NO Name Mark
  8. 01 Tom 90.35
  9. 02 Jack 89.23
  10. 03 Jeff 98.43
  11. # %b %q %(fmt)T 的例子。
  12. # see it again with a newline.
  13. printf "%s\n" 'hello world'
  14. # 展开换行符,和上面的结果一样。
  15. printf "%b" 'hello world\n'
  16. # 输出
  17. a\ b\ c
  18. # %z为时区,%n为换行符。
  19. printf "%(%F %T %z%n)T"
  20. # 输出
  21. 2019-09-10 01:48:07 +0000

注意

  1. 该命令是bash内建命令,相关的帮助信息请查看help命令。

概要

主要用途

  • 格式化参数并输出。

选项

  1. --help 显示帮助信息并退出。
  2. --version 显示版本信息并退出。

参数

arguments:一到多个参数。

例子

  1. # 使用 /usr/bin/printf 确保调用的不是内建命令。
  2. # 按行打印数组和关联数组的下标及值。
  3. # 声明数组可以不加'declare -a'或'local -a'(在函数内声明的局部变量)。
  4. arr=('line1' 'line2')
  5. /usr/bin/printf "%s\n" ${!arr[@]}
  6. # 输出下标
  7. 0
  8. 1
  9. # 输出值
  10. line1
  11. line2
  12. #声明关联数组(也就是字典)必须加'declare -A'或'local -A'(在函数内声明的局部变量)。
  13. declare -A assoc_arr=(['key1']='value1' ['key2']='value2')
  14. /usr/bin/printf "%s\n" ${!assoc_arr[@]}
  15. # 输出键。
  16. key2
  17. key1
  18. /usr/bin/printf "%s\n" ${assoc_arr[@]}
  19. # 输出值。
  20. value2
  21. value1

返回值

返回状态为成功除非给出了非法选项等。

注意

  1. 该命令是GNU coreutils包中的命令,相关的帮助信息请查看man -s 1 printfinfo coreutils 'pwd invocation'

  2. 我通过和bug-bash@gnu.org的交流,得到了关于这几个格式说明符%b %q %(fmt)T的解释:

    • Description段落。