我正在尝试编写一个带有2个参数的函数。第一个颜色名称,第二个要打印的文本。我还声明了颜色变量为全局变量。我想通过使用第一个参数字符串来扩展值。
目前,我使用的是开关盒,我认为这是最糟糕的方法。预先谢谢你
red=$'\e[1;31m'
grn=$'\e[1;32m'
yel=$'\e[1;33m'
blu=$'\e[1;34m'
mag=$'\e[1;35m'
cyn=$'\e[1;36m'
end=$'\e[0m'
Print() {
# I want to use 1st parameter to call the variables above
# i.e. if red is passed, then i want value of red which is '\e[1;31m'
printf $((${1}))
printf "$2"
printf $end
}
函数调用
打印红色“字符串”
您指的是间接参数扩展。
Print() {
printf ${!1}
printf "$2"
printf $end
}
但是,更安全的书写方式是
Print() {
printf '%s%s%s' "${!1}" "$2" "$end"
}
即使两个参数之一(尤其是第二个参数)包含%
,也可以确保获得预期的输出。