Shell脚本实现99乘法表:详解与进阶252


大家好,我是你们的Shell编程知识博主!今天我们来学习一个经典的编程练习题——用Shell脚本打印99乘法表。虽然看似简单,但其中蕴含着Shell编程的许多基本技巧,例如循环控制、字符串处理和格式输出等。掌握了这些技巧,你就能更好地应对更复杂的Shell脚本编写。本文将从基础到进阶,详细讲解如何使用Shell脚本生成99乘法表,并分析不同实现方法的优劣。

首先,让我们来看一个最基本的实现方法,使用嵌套循环: ```bash
#!/bin/bash
for i in {1..9}; do
for j in {1..9}; do
printf "%2d*%2d=%3d\t" $i $j $((i*j))
done
echo ""
done
```

这段代码的核心在于两个嵌套的`for`循环。外层循环控制行数(从1到9),内层循环控制列数(从1到9)。`printf`命令用于格式化输出,`%2d`表示输出一个宽度为2的十进制整数,`%3d`表示输出一个宽度为3的十进制整数,`\t`表示制表符,用于在数字之间添加空格,使输出对齐。`$((i*j))` 使用算术扩展计算乘积。 `echo ""` 在每一行结束后换行。

这个方法简洁明了,易于理解,是初学者学习Shell脚本的绝佳示例。但是,它的输出格式相对固定,可定制性较弱。如果我们需要改变乘法表的样式,例如调整数字之间的间距或使用不同的符号,就需要修改代码。

接下来,让我们改进一下,增加一些可定制性: ```bash
#!/bin/bash
# 设置乘法表的大小
size=9
# 设置列数
cols=9
# 计算行数
rows=$((size / cols + (size % cols > 0)))

for i in $(seq 1 $size); do
for j in $(seq 1 $cols); do
product=$((i * j))
if [[ $j -le $i ]] && [[ $product -le size * cols ]]; then
printf "%3d\t" $product
fi
done
echo
if (( $(($i % cols)) == 0 || $i == $size)); then
echo
fi
done
```

这段代码引入了变量`size`和`cols`来控制乘法表的大小和列数。这使得我们可以轻松地调整乘法表的样式。我们使用了`seq`命令生成数字序列,使得代码更简洁。同时,加入了条件判断,只在 `j

2025-05-14


上一篇:三菱PLC触摸屏GT系列脚本编程实例详解

下一篇:万能的脚本编程语言?深度解析脚本语言的适用场景和局限性