Shell printf命令


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>
原文地址:https://www.cnblogs.com/keye/p/15223101.html