一 简介
Linux系统中除了echo命令可以输出信息,还可以使用printf命令实现相同的效果。功能描述:printf命令可以格式化输出数据。printf命令的语法格式如下。
printf [格式] 参数
常用的格式字符串及功能描述下表:
应用案例:
输出的时候添加竖线,主要是为了突出显示格式化的效果。
csdn@ubuntu:~$ printf "|%d|" 12
|12|csdn@ubuntu:~$ printf "|%d|" 12
|12|csdn@ubuntu:~$ printf "|%d|\n" 12
|12|
csdn@ubuntu:~$ printf "|%5d|\n" 12
| 12|
csdn@ubuntu:~$ printf "|%-5d|\n" 12
|12 |
csdn@ubuntu:~$ printf "|%05d|\n" 12
|00012|
csdn@ubuntu:~$
该命令的格式%5d设置了打印宽度为5,以右对齐的方式显示整数12。注意,该命令的输出信息12前面有3个空格。3个空格+2个数字一起是5个字符的宽度。如果需要左对齐,则可以使用%-5d实现效果,比如下面这条命令。
当右对齐时,默认前面补空格,如最后一个命令,也可以补0。
注意,printf命令输出信息后,默认是不换行的!如果需要换行则可以使用\n命令符。
实例1:printf输出九九乘法表:
源码:mul.sh
#!/bin/bash
for((i=1;i<=9;i++))
do
echo -n "| "
for((a=1;a<=i;a++))
do
let c=$i*$a;
echo -n "$a*$i="
[[ $a -gt 1 ]] && printf "%-3d| " $c || printf "%-2d| " $c
done
echo
done
输出结果:还是挺漂亮的。
csdn@ubuntu:~$ bash mul.sh
| 1*1=1 |
| 1*2=2 | 2*2=4 |
| 1*3=3 | 2*3=6 | 3*3=9 |
| 1*4=4 | 2*4=8 | 3*4=12 | 4*4=16 |
| 1*5=5 | 2*5=10 | 3*5=15 | 4*5=20 | 5*5=25 |
| 1*6=6 | 2*6=12 | 3*6=18 | 4*6=24 | 5*6=30 | 6*6=36 |
| 1*7=7 | 2*7=14 | 3*7=21 | 4*7=28 | 5*7=35 | 6*7=42 | 7*7=49 |
| 1*8=8 | 2*8=16 | 3*8=24 | 4*8=32 | 5*8=40 | 6*8=48 | 7*8=56 | 8*8=64 |
| 1*9=9 | 2*9=18 | 3*9=27 | 4*9=36 | 5*9=45 | 6*9=54 | 7*9=63 | 8*9=72 | 9*9=81 |
csdn@ubuntu:~$
实例2:echo输出九九乘法表:
这里不使用printf,而是使用了大量的判断,利用echo输出的
#!/bin/bash
for((i=1;i<=9;i++))
do
echo -n "| "
for((a=1;a<=i;a++))
do
let c=$i*$a;
echo -n "$a*$i="
#[[ $a -gt 1 ]] && printf "%-3d| " $c || printf "%-2d| " $c
[[ $a -eq 1 ]] && echo -n "$c | " && continue;
[[ $c -gt 1 ]] && [[ $c -gt 9 ]] && echo -n "$c | " && continue;
[[ $c -gt 1 ]] && [[ $c -gt 9 ]] || echo -n "$c | "
done
echo
done
执行效果如下所示:
csdn@ubuntu:~$ bash mul.sh
| 1*1=1 |
| 1*2=2 | 2*2=4 |
| 1*3=3 | 2*3=6 | 3*3=9 |
| 1*4=4 | 2*4=8 | 3*4=12 | 4*4=16 |
| 1*5=5 | 2*5=10 | 3*5=15 | 4*5=20 | 5*5=25 |
| 1*6=6 | 2*6=12 | 3*6=18 | 4*6=24 | 5*6=30 | 6*6=36 |
| 1*7=7 | 2*7=14 | 3*7=21 | 4*7=28 | 5*7=35 | 6*7=42 | 7*7=49 |
| 1*8=8 | 2*8=16 | 3*8=24 | 4*8=32 | 5*8=40 | 6*8=48 | 7*8=56 | 8*8=64 |
| 1*9=9 | 2*9=18 | 3*9=27 | 4*9=36 | 5*9=45 | 6*9=54 | 7*9=63 | 8*9=72 | 9*9=81 |
csdn@ubuntu:~$
实例三 :美颜的九九乘法表:
#!/bin/bash
for((i=1;i<=9;i++))
do
echo -ne "\033[1;4;32m| \033[0m"
for((a=1;a<=i;a++))
do
let c=$i*$a;
#echo -n "$a*$i="
printf "\033[1;4;32m$a*$i=\033[0m"
[[ $a -gt 1 ]] && printf "\033[1;4;32m%-3d|\033[0m" $c || printf "\033[1;4;32m%-2d|\033[0m" $c
#[[ $a -eq 1 ]] && echo -n "$c | " && continue;
#[[ $c -gt 1 ]] && [[ $c -gt 9 ]] && echo -n "$c | " && continue;
#[[ $c -gt 1 ]] && [[ $c -gt 9 ]] || echo -n "$c | "
done
echo
done
执行结果: