求助:编写生成指定格式数字三角形的Shell脚本
解决Shell脚本生成指定数字三角形的问题
你的核心问题是数字个数的递增规律不符合要求,原脚本里每行数字个数等于行号(1→2→3→4→5→6),但目标格式是1→2→4→6→8→10,同时需要保证每行总长度一致来实现右对齐。以下是调整后的脚本:
t=6 # 总行数固定为6 for ((i=1; i<=6; i++)); do # 计算当前行的数字个数 if ((i == 1)); then count=1 else count=$((2*(i-1))) fi # 计算前置空格数:每行总长度10,减去数字个数 spaces=$((10 - count)) # 打印对应数量的空格 printf "%${spaces}s" "" # 打印count次当前数字t for ((j=1; j<=count; j++)); do printf "$t" done # 数字递减 t=$((t-1)) echo "" done
关键调整说明:
- 数字个数计算:第一行保留1个数字,从第二行开始,数字个数变为
2*(行号-1),以此实现2→4→6→8→10的递增规律 - 空格对齐:通过
10 - count计算前置空格数,确保每行总长度固定为10,实现右侧对齐的效果
运行上述脚本后,输出结果与目标完全一致:
6 55 4444 333333 22222222 1111111111
内容的提问来源于stack exchange,提问作者Lukasok1
相关产品推荐
相关产品推荐

