Skip to content

printf 命令

基本用法

输出文本

bash
#!/bin/bash

# 输出文本
printf "Hello, World!\n"

输出变量

bash
#!/bin/bash

# 定义变量
name="张三"

# 输出变量
printf "你好, %s!\n" "$name"

格式说明符

字符串

bash
#!/bin/bash

# 输出字符串
printf "姓名: %s\n" "张三"
printf "城市: %s\n" "北京"

整数

bash
#!/bin/bash

# 输出整数
printf "年龄: %d\n" 25
printf "数量: %d\n" 100

浮点数

bash
#!/bin/bash

# 输出浮点数
printf "价格: %.2f\n" 19.99
printf "温度: %.1f\n" 25.5

字符

bash
#!/bin/bash

# 输出字符
printf "首字母: %c\n" "A"
printf "符号: %c\n" "@"

宽度和精度

宽度

bash
#!/bin/bash

# 设置宽度
printf "%10s\n" "Hello"
printf "%10s\n" "World"

左对齐

bash
#!/bin/bash

# 左对齐
printf "%-10s\n" "Hello"
printf "%-10s\n" "World"

精度

bash
#!/bin/bash

# 设置精度
printf "%.2f\n" 3.14159
printf "%.4f\n" 3.14159

宽度和精度

bash
#!/bin/bash

# 设置宽度和精度
printf "%10.2f\n" 3.14159
printf "%-10.2f\n" 3.14159

转义字符

常用转义字符

bash
#!/bin/bash

# 换行
printf "Hello\nWorld\n"

# 制表符
printf "Hello\tWorld\n"

# 回车
printf "Hello\rWorld\n"

# 反斜杠
printf "Hello\\World\n"

实用示例

示例1:表格

bash
#!/bin/bash

# 表格头
printf "%-10s %-10s %-10s\n" "姓名" "年龄" "城市"
printf "%-10s %-10s %-10s\n" "----" "----" "----"

# 表格内容
printf "%-10s %-10d %-10s\n" "张三" 25 "北京"
printf "%-10s %-10d %-10s\n" "李四" 30 "上海"
printf "%-10s %-10d %-10s\n" "王五" 28 "广州"

示例2:进度条

bash
#!/bin/bash

# 进度条
for i in {1..100}; do
    printf "\r进度: [%-50s] %d%%" $(printf '#%.0s' $(seq 1 $((i / 2)))) $i
    sleep 0.05
done
printf "\n完成!\n"

示例3:格式化数字

bash
#!/bin/bash

# 格式化数字
printf "整数: %d\n" 12345
printf "浮点数: %.2f\n" 12345.6789
printf "科学计数法: %e\n" 12345.6789
printf "十六进制: %x\n" 255
printf "八进制: %o\n" 255

示例4:日期时间

bash
#!/bin/bash

# 日期时间
date=$(date '+%Y-%m-%d %H:%M:%S')
printf "当前时间: %s\n" "$date"

最佳实践

1. 使用格式说明符

bash
# 好的做法
printf "姓名: %s\n" "张三"

# 不好的做法
echo "姓名: 张三"

2. 使用引号

bash
# 好的做法
printf "Hello, %s!\n" "$name"

# 不好的做法
printf Hello, %s!\n $name

3. 使用换行符

bash
# 好的做法
printf "Hello, World!\n"

# 不好的做法
printf "Hello, World!"

总结

printf 命令的关键点:

  1. 基本用法printf "格式" 参数
  2. 格式说明符%s%d%f%c
  3. 宽度和精度%10s%.2f%-10s
  4. 转义字符\n\t\r\\
  5. 实用示例:表格、进度条、格式化数字、日期时间
  6. 最佳实践:使用格式说明符、使用引号、使用换行符

下一节我们将学习 read 命令的使用。