如何在bash中进行两次间接扩展?
我正在尝试将颜色名称作为参数来更改该打印的字体颜色。我还要根据所传递的颜色来打印信息类型,例如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
。
如何在bash中进行两次间接扩展?