Вот что у меня есть:
#!/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, чтобы получить правильный формат.