news 2026/4/30 13:18:54

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/28 3:24:45

Typescript - interface 关键字(通俗易懂的详细教程)

前言 简单来说&#xff0c;Interface 就是一种描述对象或函数的东西。 您可以把 interface 理解为形状&#xff0c;真实开发情况下&#xff0c;一个对象需要有什么样的属性&#xff0c;函数需要什么参数或返回什么样的值&#xff0c;数组应该是什么样子的&#xff0c;一个类和继…

作者头像 李华
网站建设 2026/4/16 17:14:36

Typescript - 类型守卫(typeof / in / instanceof / 自定义类型保护的类型谓词)通俗易懂详细教程

前言 类型守卫用于获取变量类型信息&#xff0c;通常使用在条件块语句中。类型守卫是返回布尔值的常规函数&#xff0c;接受一个类型并告诉 TypeScript 是否可以缩小到更具体的类型。类型守卫具有唯一的属性&#xff0c;可以确保测试的值返回的是布尔值类型。 TypeScript 使用了…

作者头像 李华
网站建设 2026/4/21 21:23:39

Elasticsearch慢查询优化:大数据场景下定位与解决方法

Elasticsearch慢查询优化&#xff1a;大数据场景下定位与解决方法 引言&#xff1a;为什么慢查询会成为大数据场景的“隐形杀手”&#xff1f; 想象一个场景&#xff1a;你是某电商平台的搜索工程师&#xff0c;凌晨3点突然收到告警——商品搜索接口的95分位延迟从500ms飙升到…

作者头像 李华
网站建设 2026/4/23 16:05:06

C++初识

一&#xff1a;关键字 auto关键字 int main() {int a 0;int b a;auto c a; //根据右边的表达式自动推导c的类型auto d 11.1; //根据右边的表达式自动推导d的类型//typeid()查看变量类型cout << typeid(c).name() <<endl; cout << typeid(d).name() &…

作者头像 李华
网站建设 2026/4/26 11:23:39

66666666666

66666

作者头像 李华