首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >BASH中的彩色文本函数

BASH中的彩色文本函数
EN

Stack Overflow用户
提问于 2022-07-13 11:06:41
回答 4查看 124关注 0票数 1

我试图在bash中创建一个函数,该函数获取一个参数,并根据该参数对文本进行颜色化。假设colorText红色将我的文本涂成红色。到目前为止,这是我写的,但上面写着./colorText: line 10: ${$1}dad: bad substitution

代码语言:javascript
运行
复制
#!/bin/bash

RED="\033[31m"
GREEN="\033[0;32m"
YELLOW="\033[0;33m"
NC="\033[0m"

colorText () {
echo $1
echo -e "${$1}dad"
}

colorText $1

最后一个$1是因为我想使用来自我的终端的脚本文件。

EN

回答 4

Stack Overflow用户

发布于 2022-07-13 12:08:19

试试这个:

代码语言:javascript
运行
复制
$ cat tst.sh
#!/usr/bin/env bash

declare -A c
c["RED"]='31'
c["GREEN"]='32'
c["YELLOW"]='33'
c["BLACK"]='0'

colorText () {
    printf '%s\n' "$1"
    printf '\e[%sm%s\e[0m\n' "${c[$1]}" 'dad'
}

colorText "$1"

另请参阅:

  1. tput-setaf-color-table-how-to-determine-color-codes
  2. 使用-awk到彩色输出的bash
票数 2
EN

Stack Overflow用户

发布于 2022-07-13 11:38:39

因此,检查$1是否等于红色,如果等于,输出$RED,对每种颜色重复。你只要打开颜色号码就行了。

代码语言:javascript
运行
复制
case "$1" in
RED) n=31; ;;
GREEN) n=32; ;;
YELLOW) n=33; ;;
esac
echo -e "\033[${n}m"
票数 1
EN

Stack Overflow用户

发布于 2022-07-13 15:46:26

对OP的当前代码做了一些小调整:

代码语言:javascript
运行
复制
colorText () {
    local -n color="${1}"           # define local variable as nameref
    echo -e "${color}dad${NC}"      # add ${NC} to turn off colorization
}

参加试驾:

代码语言:javascript
运行
复制
RED="\033[31m"
GREEN="\033[0;32m"
YELLOW="\033[0;33m"
NC="\033[0m"

colorText RED
colorText GREEN
colorText YELLOW
colorText BLUE                     # BLUE is undefined so there should be no color applied

这就产生了:

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72965248

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档