【发布时间】:2019-03-17 19:25:42
【问题描述】:
这是我所拥有的:
#!/bin/bash
#create a multiplication table 5 columns 10 rows
echo " Multiplication Table "
echo "-----+-------------------------"
for x in {0..5}
do
for y in {0..10}
do
echo -n "$(( $x * $y )) "
done
echo
echo "-----+--------------------------"
done
这是我的输出:
Multiplication Table
-----+-------------------------
0 0 0 0 0 0 0 0 0 0 0
-----+--------------------------
0 1 2 3 4 5 6 7 8 9 10
-----+--------------------------
0 2 4 6 8 10 12 14 16 18 20
-----+--------------------------
0 3 6 9 12 15 18 21 24 27 30
-----+--------------------------
0 4 8 12 16 20 24 28 32 36 40
-----+--------------------------
0 5 10 15 20 25 30 35 40 45 50
-----+--------------------------
这是需要的输出:
Multiplication Table
----+-------------------------------------
| 0 1 2 3 4
----+-------------------------------------
0 | 0 0 0 0 0
1 | 0 1 2 3 4
2 | 0 2 4 6 8
3 | 0 3 6 9 12
4 | 0 4 8 12 16
5 | 0 5 10 15 20
6 | 0 6 12 18 24
7 | 0 7 14 21 28
8 | 0 8 16 24 32
9 | 0 9 18 27 36
----+-------------------------------------
我尝试了很多不同的方式来编写这些,但我正在努力寻找一种正确格式化它的方法。第一个非常接近,但我需要它让序列号在顶部和左侧相乘。我不确定如何使用或是否可以使用 seq 命令来实现此目的,或者是否有更好的方法。我还需要用定义行设置表格布局的直列和行,但是我查找 column 命令没有产生正确的输出。
这是我的最终输出和代码:
#!/bin/bash
#create a multiplication table 5 columns 10 rows
#Create top of the table
echo " Multiplication Table"
echo "----+------------------------------"
#Print the nums at top of table and format dashes
echo -n " |"; printf '\t%d' {0..5}; echo
echo "----+------------------------------"
#for loops to create table nums
for y in {0..9}
do
#Print the side nums and |
echo -n "$y |"
#for loop to create x
for x in {0..5}
do
#Multiply vars, tab for spacing
echo -en "\t$((x*y))"
done
#Print
echo
done
#Print bottom dashes for format
echo "----+------------------------------"
我更改了一些 Armali 的代码,只是为了让它更吸引眼球,并且回显被移到了底部(循环外),因此它不会打印那么多行。但再次感谢 Armali,因为我会花更多时间弄清楚如何编写 printf 代码以获取正确的格式。
【问题讨论】:
-
看看
printf。格式化输出应该对布局有很大帮助。 -
非常感谢Poshi,会做的! printf 已列出,但我还没有编写任何 C 风格的脚本,尽管我会进一步研究它。感谢一个方向的回复和帮助!
-
您应该将其作为答案发布,而不是将您的解决方案附加到问题中;这样你甚至可以获得声望点。
标签: bash loops row multiple-columns multiplication