当前位置: 首页 > news >正文

shell实现根据输入的文字打印出大号字符艺术

创建脚本

#!/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

http://www.jsqmd.com/news/323308/

相关文章:

  • Typescript - interface 关键字(通俗易懂的详细教程)
  • AI测试领域2025年度大事件盘点:标准确立、技术跃迁与市场领航
  • FoundIR: Unleashing Million-scale Training Data to Advance Foundation Models-ICCV2025
  • 魔法登录antigravity
  • Typescript - 类型守卫(typeof / in / instanceof / 自定义类型保护的类型谓词)通俗易懂详细教程
  • python_django基于微信小程序的移动医院挂号预约系统
  • 接口(集成)平台设计(一)-服务,接口,数据集和数据源
  • python_django基于微信小程序的竞赛报名系统_13348
  • 权威测评|微信小程序公司 TOP 名单,教你锁定适配服务商
  • python_django基于微信小程序的自习室座位预约付费打卡系统
  • 小程序 SaaS 制作平台超全攻略,找对适配伙伴赋能创业
  • python_django基于微信小程序的服装商城销售管理平台
  • 严选国内优质微信小程序开发公司:适配各类生意场景
  • python_django基于微信小程序的校园店铺商城电子商务系统
  • 一文吃透 Spring 生态核心:IoC/DI 原理、Bean 管理与实战指南
  • python_django基于微信小程序的班级学生作业管理助手
  • 单调队列优化dp
  • python_django个性化推荐小学生古诗词情景化学习小程序
  • 本地餐饮外卖专属:小程序开发公司甄选,生意高效跑通技巧
  • Windows CMD文件编辑器:从内置工具到第三方方案
  • 2026程序员转行AI大模型全攻略:后端开发轻松转型大模型应用开发,零基础突围路线图!非常详细建议收藏!
  • 从传统BI到大数据多维分析的迁移路径
  • Vite代理配置中changeOrigin: true的作用详解(转发请求时的Host头,解决后端对Host头的校验)Origin头、403/400错误、Invalid Host header
  • 2026最新小程序开发平台TOP实战测评:适配不同场景的选型方案
  • agent skills好像是把原本mcp的方法改成cli方法放在skill里
  • STM32F1xx HAL_FLASH:扩展库核心应用指南
  • STM32F1xx HAL_FLASH库实战指南
  • 基于Impress.js的智能多面棱柱演示器:技术与创意深度解析
  • 区块链|钱包开发的相关问题
  • 程序员必学!企业级大模型落地全攻略:6-12个月实现AI转型的关键路径