我有一个关于在 BASH 中创建 ASCII 图形的问题。
我有一个文件,其中包含:
April = 90
October = 80
有没有一些方法可以使用 ASCII 艺术创建图表 像这样:
April
[=========================] 90
October
[================] 80
最佳答案
使用 bash
一个可能的解决方案是使用 printf
与 seq
结合使用来打印以零长度字符串转换的数字序列,后跟固定字符(在本例中为 =
):
printf "%.0s=" $(seq 1 5) # output -> =====
说明:
seq 1 5
:它仅打印从1
到5
的一系列以空格分隔的整数(即1 2 3 4 5
)
printf
格式字符串%.0s=
的增量解释:
%s
:将后面的每个 printf 参数(即数字序列)格式化为字符串;%.0s
:添加点后跟一个整数(在本例中为.0
)意味着如果该字符串大于数字则省略该字符串。因此,在这种情况下,0
意味着始终省略字符串。%.s
形式是零前一个的较短等效版本;%.s=
:我们添加了=
以使字符串(省略)后跟固定字符(在本例中为=
)。
因此,基本上要完成您的任务,您必须使用循环逐行解析输入,以获得实际的月份
和条形图的长度
,将它们存储到变量中,然后打印条形图,您可以使用类似的东西:
echo "${month}"
echo " [$(printf "%.s=" $(seq 1 ${length}))]"
示例结果为:
April
[====================]
关于linux - 构建 Ascii 艺术图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48385233/