如何使用传递的参数在Bash脚本中将其值作为全局变量来调用?

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

我正在尝试编写一个带有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
}

函数调用

打印红色“字符串”

linux bash command-line scripting textcolor
1个回答
0
投票

您指的是间接参数扩展。

Print() {
    printf ${!1}
    printf "$2"
    printf $end
}

但是,更安全的书写方式是

Print() {
  printf '%s%s%s' "${!1}" "$2" "$end"
}

即使两个参数之一(尤其是第二个参数)包含%,也可以确保获得预期的输出。

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