Shell printf命令


1.printf

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


2.printf 的转义序列

\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>
posted @ 2021-09-03 14:56  做梦当财神  阅读(779)  评论(0编辑  收藏  举报