Shell 的另一个输出命令 printf
。printf 比 echo 移植性好。
printf 使用引用文本或空格分割参数,不会像 echo 自动换行。
printf
命令语法:
printf format-string [arguments...]
参数:
format-string
:格式控制字符串argument
:参数列表实例:
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
运行结果:
姓名 性别 体重kg
郭靖 男 66.12
杨过 男 48.65
郭芙 女 47.23
%s %c %d %f
都是格式替代符,%s
输出一个字符串,%d
整型输出,%c
输出一个字符,%f
输出实数。以小数形式输出。
%-10s
指一个宽度为 10 个字符(-
表示左对齐,没有则表示右对齐),任何字符都会被显示在10个字符宽度内。不足以空格填充,超过依旧将内容全部显示。
%-4.2f
指格式化为小数,.2
指保留2位小数。
实例:
# format-string为双引号
printf "%d %s\n" 1 "abc"
# 单引号、双引号效果一样
printf ‘%d %s\n‘ 1 "abc"
# 没有引号也可以
printf %s "abc"
# 格式只指定了一个参数,多出的参数任会按格式输出,format-string 被重用
printf "%s" "abc" "def"
printf "%s\n" "abc" "def"
printf "%s %s %s\n" a b c d e f
# 没有参数时,%s用NULL代替,%d用0代替
printf "%s and %d \n"
运行结果:
1 abc
1 abc
abcabcdefabc
def
a b c
d e f
and 0
\b
:后退。换行符在此格式下有效。
实例:
printf "a string, no processing:<%s>\n" "A\nB"
printf "a string, no processing:<%b>\n" "A\nB"
运行结果:
a string, no processing:<A\nB>
a string, no processing:<A
B>
原文:https://www.cnblogs.com/keye/p/15223101.html