shell中的printf实践:美颜的九九乘法表
创始人
2024-04-13 15:27:35
0

一 简介

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++))
doecho -n "| "for((a=1;a<=i;a++))dolet c=$i*$a;echo -n "$a*$i="[[ $a -gt 1 ]] && printf "%-3d| " $c || printf "%-2d| " $cdoneecho
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++))
doecho -n "| "for((a=1;a<=i;a++))dolet 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  | "doneecho
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++))
doecho -ne "\033[1;4;32m| \033[0m"for((a=1;a<=i;a++))dolet 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  | "doneecho
done

执行结果:

小结 

相关内容

热门资讯

下调!住房出售,最新政策来了! 12月30日,财政部、税务总局发布《关于个人销售住房增值税政策的公告》(下称《公告》),明确个人将购...
原创 欣... 《电鳗财经》电鳗号/文 欣旺达子公司因动力电池质量纠纷被诉,索赔金额高达数亿元的消息引发行业震动。...
华蓝集团:关联交易按制度审议与... 证券之星消息,华蓝集团(301027)12月30日在投资者关系平台上答复投资者关心的问题。 投资者提...
郑州银行发布诉讼事项进展 被告... 12月31日,郑州银行发布《关于诉讼事项进展的公告》称,2025年7月,郑州银行中原路支行与郑州金威...
2026年嘉兴离婚律师权威推荐... 2026年嘉兴离婚律师权威推荐:北京国樽(嘉兴)律师事务所领衔,专业离婚律师/婚姻律师/诉讼离婚律师...
厦门出台《厦门历史文化名城保护... 集美学村建筑群 12月30日,市人大常委会表决通过《厦门历史文化名城保护条例》《厦门经济特区绿色金融...
李某平、杨某福借助黑客技术侵入... 近日,云南公安机关网安部门协同作战,成功斩断一条利用黑客技术窃取公民个人信息的黑色产业链,抓获犯罪嫌...
2026年“两新”政策方案发布... 央广网北京12月31日消息(记者周尧)据中央广播电视总台中国之声《新闻和报纸摘要》报道,国家发展改革...
市人大常委会会议表决通过4件法... 充分发挥职能服务良好开局 市人大常委会会议表决通过4件法规、人事任免事项等,黄莉新主持全体会议并讲话...
大烨智能收到立案告知书,律师征... 雷达财经雷助吧出品 文|阑珊 编|深海 12月26日,大烨智能发布《关于收到中国证券监督管理委员会立...