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命令符。
源码: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:~$
这里不使用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
执行结果: