1.printf
Shell 的另一个输出命令 printf
。printf 比 echo 移植性好。
printf 使用引用文本或空格分割参数,不会像 echo 自动换行。
printf
命令语法:
printf format-string [arguments...]
参数:
format-string
:格式控制字符串argument
:参数列表
实例:
printf "%-10s %-8s %-4s
" 姓名 性别 体重kg
printf "%-10s %-8s %-4.2f
" 郭靖 男 66.1234
printf "%-10s %-8s %-4.2f
" 杨过 男 48.6543
printf "%-10s %-8s %-4.2f
" 郭芙 女 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
" 1 "abc"
# 单引号、双引号效果一样
printf '%d %s
' 1 "abc"
# 没有引号也可以
printf %s "abc"
# 格式只指定了一个参数,多出的参数任会按格式输出,format-string 被重用
printf "%s" "abc" "def"
printf "%s
" "abc" "def"
printf "%s %s %s
" a b c d e f
# 没有参数时,%s用NULL代替,%d用0代替
printf "%s and %d
"
运行结果:
1 abc
1 abc
abcabcdefabc
def
a b c
d e f
and 0
2.printf 的转义序列
:后退。换行符在此格式下有效。
实例:
printf "a string, no processing:<%s>
" "A
B"
printf "a string, no processing:<%b>
" "A
B"
运行结果:
a string, no processing:<A
B>
a string, no processing:<A
B>