创建脚本
#!/bin/bash
# bigfont.sh - 纯 Shell 大字体库
# 定义大字体,每个字符 6 行
declare -A bigfont
# ---------------- 字母 ----------------
bigfont["A"]=" █████╗
██╔══██╗
███████║
██╔══██║
██║ ██║
╚═╝ ╚═╝ "
bigfont["B"]="██████╗
██╔══██╗
██████╔╝
██╔══██╗
██████╔╝
╚═════╝ "
bigfont["C"]=" ██████╗
██╔════╝
██║
██║
╚██████╗
╚═════╝ "
bigfont["D"]="██████╗
██╔══██╗
██║ ██║
██║ ██║
██████╔╝
╚═════╝ "
bigfont["E"]="███████╗
██╔════╝
█████╗
██╔══╝
███████╗
╚══════╝ "
bigfont["F"]="███████╗
██╔════╝
█████╗
██╔══╝
██║
╚═╝ "
bigfont["G"]=" ██████╗
██╔════╝
██║ ███╗
██║ ██║
╚██████╔╝
╚═════╝ "
bigfont["H"]="██╗ ██╗
██║ ██║
███████║
██╔══██║
██║ ██║
╚═╝ ╚═╝ "
bigfont["I"]="██╗
██║
██║
██║
██║
╚═╝"
bigfont["J"]=" ██╗
██║
██║
██ ██║
╚█████╔╝
╚════╝ "
bigfont["K"]="██╗ ██╗
██║ ██╔╝
█████╔╝
██╔═██╗
██║ ██╗
╚═╝ ╚═╝ "
bigfont["L"]="██╗
██║
██║
██║
███████╗
╚══════╝ "
bigfont["M"]="███╗ ███╗
████╗ ████║
██╔████╔██║
██║╚██╔╝██║
██║ ╚═╝ ██║
╚═╝ ╚═╝"
bigfont["N"]="███╗ ██╗
████╗ ██║
██╔██╗ ██║
██║╚██╗██║
██║ ╚████║
╚═╝ ╚═══╝"
bigfont["O"]=" ██████╗
██╔═══██╗
██║ ██║
██║ ██║
╚██████╔╝
╚═════╝ "
bigfont["P"]="██████╗
██╔══██╗
██████╔╝
██╔═══╝
██║
╚═╝ "
bigfont["Q"]=" ██████╗
██╔═══██╗
██║ ██║
██║▄▄ ██║
╚██████╔╝
╚══▀▀═╝ "
bigfont["R"]="██████╗
██╔══██╗
██████╔╝
██╔═══╝
██║
╚═╝ "
bigfont["S"]="███████╗
██╔════╝
███████╗
╚════██║
███████║
╚══════╝ "
bigfont["T"]="████████╗
╚══██╔══╝
██║
██║
██║
╚═╝ "
bigfont["U"]="██╗ ██╗
██║ ██║
██║ ██║
██║ ██║
╚██████╔╝
╚═════╝ "
bigfont["V"]="██╗ ██╗
██║ ██║
██║ ██║
╚██╗ ██╔╝
╚████╔╝
╚═══╝ "
bigfont["W"]="██╗ ██╗
██║ ██║
██║ █╗ ██║
██║███╗██║
╚███╔███╔╝
╚══╝╚══╝ "
bigfont["X"]="██╗ ██╗
╚██╗██╔╝
╚███╔╝
██╔██╗
██╔╝ ██╗
╚═╝ ╚═╝"
bigfont["Y"]="██╗ ██╗
╚██╗ ██╔╝
╚████╔╝
╚██╔╝
██║
╚═╝ "
bigfont["Z"]="███████╗
██╔╝
██╔╝
██╔╝
██╔╝
███████╗ "
# ---------------- 数字 ----------------
bigfont["0"]=" ██████╗
██╔═══██╗
██║ ██║
██║ ██║
╚██████╔╝
╚═════╝ "
bigfont["1"]=" ██╗
███║
╚██║
██║
██║
╚═╝ "
bigfont["2"]="██████╗
╚════██╗
█████╔╝
██╔═══╝
███████╗
╚══════╝"
bigfont["3"]="██████╗
╚════██╗
█████╔╝
╚═══██╗
██████╔╝
╚═════╝ "
bigfont["4"]="██╗ ██╗
██║ ██║
███████║
╚════██║
██║
╚═╝"
bigfont["5"]="███████╗
██╔════╝
███████╗
╚════██║
███████║
╚══════╝"
bigfont["6"]=" ██████╗
██╔════╝
███████╗
██╔══██║
╚██████║
╚═════╝ "
bigfont["7"]="███████╗
╚════██║
██╔╝
██╔╝
██╔╝
╚═╝ "
bigfont["8"]="███████╗
██╔══██╗
███████║
██╔══██║
███████║
╚══════╝"
bigfont["9"]="███████╗
██╔══██╗
███████║
╚════██║
███████║
╚══════╝"
# ---------------- 特殊字符 ----------------
bigfont[" "]="
"
bigfont["-"]="
██████╗
╚═════╝
"
bigfont["."]="
██╗
╚═╝ "
# ---------------- 打印函数 ----------------
print_big() {
local input="$1"
local lines=6 # 每个字符行数
# 创建数组存储每行输出
local output_lines=("" "" "" "" "" "")
# 逐字符处理
for ((j=0;j<${#input};j++)); do
char="${input:j:1}"
# 如果是小写字母,转换为大写
if [[ "$char" =~ [a-z] ]]; then
char=$(echo "$char" | tr 'a-z' 'A-Z')
fi
# 获取字符的6行表示
if [[ -n "${bigfont[$char]}" ]]; then
# 将字符的6行分割到数组
IFS=$'\n' read -r -d '' -a char_lines <<< "${bigfont[$char]}"
# 将每行添加到输出数组
for ((i=0;i<lines;i++)); do
# 如果字符行数不够,用空格补齐
if [[ -n "${char_lines[$i]}" ]]; then
line_content="${char_lines[$i]}"
else
line_content=""
fi
# 固定宽度:每个字符占10个字符宽度
output_lines[$i]="${output_lines[$i]}${line_content} "
done
else
# 对于未定义的字符,用空格占位
for ((i=0;i<lines;i++)); do
output_lines[$i]="${output_lines[$i]}${char} "
done
fi
done
# 打印所有行
for ((i=0;i<lines;i++)); do
echo "${output_lines[$i]}"
done
}
# 测试函数
test_print() {
echo "=== 测试数字 ==="
print_big "1234567890"
echo ""
echo "=== 测试字母 ==="
print_big "ABCDEFGHIJKL"
print_big "MNOPQRSTUVWXYZ"
echo ""
echo "=== 测试混合 ==="
print_big "HELLO 2024"
}
# 如果传入参数,则打印参数,否则运行测试
if [[ $# -gt 0 ]]; then
print_big "$*"
else
test_print
fi
运行测试
# 打印参数
./bigfont.sh "HELLO WORLD"
# 或者直接运行脚本测试
./bigfont.sh

328



被折叠的 条评论
为什么被折叠?



