我试图在bash中创建一个函数,该函数获取一个参数,并根据该参数对文本进行颜色化。假设colorText红色将我的文本涂成红色。到目前为止,这是我写的,但上面写着./colorText: line 10: ${$1}dad: bad substitution
#!/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是因为我想使用来自我的终端的脚本文件。
发布于 2022-07-13 12:08:19
试试这个:
$ 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"另请参阅:
发布于 2022-07-13 11:38:39
因此,检查$1是否等于红色,如果等于,输出$RED,对每种颜色重复。你只要打开颜色号码就行了。
case "$1" in
RED) n=31; ;;
GREEN) n=32; ;;
YELLOW) n=33; ;;
esac
echo -e "\033[${n}m"发布于 2022-07-13 15:46:26
对OP的当前代码做了一些小调整:
colorText () {
local -n color="${1}" # define local variable as nameref
echo -e "${color}dad${NC}" # add ${NC} to turn off colorization
}参加试驾:
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这就产生了:

https://stackoverflow.com/questions/72965248
复制相似问题