如何在bash中进行两次间接扩展?

问题描述 投票:0回答:1

我正在尝试将颜色名称作为参数来更改该打印的字体颜色。我还要根据所传递的颜色来打印信息类型,例如INFO,ERR,SUCC,CMD等。

功能是

red=ERR
grn=SUCC
yel=WARN
blu=INFO
mag=STAT
cyn=CMD

ERR=31
SUCC=32
WARN=33
INFO=34
STAT=35
CMD=36

end=$'\e[0m'

Print() {
    printf "\033[1;${!{!1}}m${!1} $3\033[0m\n"
}

并使用]进行调用

Print red "text"

预期输出

] >>
[ ERR] text <------IN RED

实际输出

] >>
*\033[1;${!{!1}}m${!1} $3\033[0m\n: bad substitution*

我正在尝试将颜色名称作为参数来更改该打印的字体颜色。我还要根据所传递的颜色来打印信息类型,如INFO,ERR,SUCC,CMD等。函数...

如何在bash中进行两次间接扩展?

无法直接完成。但这可以间接完成,仅需一行:

Print() {
    msg=${!1}
    printf "\033[1;${!msg}m[${msg}] $2\033[0m\n"
}

注意$3错误,应该是$2

linux bash shell command
1个回答
0
投票

如何在bash中进行两次间接扩展?

© www.soinside.com 2019 - 2024. All rights reserved.