构建Bash变量名

构建Bash变量名,bash,macos,sh,Bash,Macos,Sh,我想为彩色输出创建一个函数(只是为了更好地学习bash) 这就是有效的方法 ESC_SEQ="\x1b[" # foreground red FG_RED="${ESC_SEQ}31;" # background yellow BG_YELLOW="43;" # style bold FS_BOLD="1m" # echo echo -e "${FG_RED}${BG_YELLOW}${FS_BOLD}Hello World!" 不,我尝试构建函数 function ext_echo() {

我想为彩色输出创建一个函数(只是为了更好地学习bash)

这就是有效的方法

ESC_SEQ="\x1b["
# foreground red
FG_RED="${ESC_SEQ}31;"
# background yellow
BG_YELLOW="43;"
# style bold
FS_BOLD="1m"
# echo
echo -e "${FG_RED}${BG_YELLOW}${FS_BOLD}Hello World!"
不,我尝试构建函数

function ext_echo() 
{
    // lets say $1 is RED, $2 is YELLOW, $3 is BOLD
    // so is need something like ...
    echo -e "${FG_$1}${BG_$2}${FS_$3}Hello World!"
}
如何从该参数构建回显执行? 我不知道在没有临时变量的情况下如何以及是否可能。我所发现的一切都是使用tmp变量来实现的


我不知道在没有临时变量的情况下如何以及是否可能。我所发现的一切都是使用tmp变量来实现的。

以下脚本应该是一个足够好的起点:

#!/bin/bash


ext_echo()
{
  declare -A colors

  colors=(
    [red]="<red>"
    [blue]="<blue>"
  )

  for c in "$@"; do
    echo ${colors[$c]}
  done
}

ext_echo red blue
#/bin/bash
ext_echo()
{
声明-A颜色
颜色=(
[红色]=“”
[蓝色]=“”
)
对于“$@”中的c,请执行以下操作
echo${colors[$c]}
完成
}
分机回声红蓝
输出

<red>
<blue>

以下脚本应该是一个足够好的起点:

#!/bin/bash


ext_echo()
{
  declare -A colors

  colors=(
    [red]="<red>"
    [blue]="<blue>"
  )

  for c in "$@"; do
    echo ${colors[$c]}
  done
}

ext_echo red blue
#/bin/bash
ext_echo()
{
声明-A颜色
颜色=(
[红色]=“”
[蓝色]=“”
)
对于“$@”中的c,请执行以下操作
echo${colors[$c]}
完成
}
分机回声红蓝
输出

<red>
<blue>


映射/关联数组是否可以帮助您?映射/关联数组是否可以帮助您?这不起作用@dknaack你的着色参数似乎是错误的。我刚刚演示了如何连接字符串以提取可调用变量。在mac its“\x1b[”和linux its“\e”上,黄色是
\e[43m
而不是
43;
,但这不是问题所在。在您的示例中,我希望AA是“黄色”@dknaack我没有意识到。我更新了我的示例以在Linux上工作,现在应该清楚如何将其转换为OSX。这不起作用?!@dknaack您对参数着色似乎是错误的。我只是向您展示了如何连接字符串以提取可调用变量。黄色是mac its“\x1b[”上的
\e[43m
不是
43;
在linux上是“\e”,但这不是问题所在。在您的示例中,我希望AA为“黄色”@dknaack,我没有意识到。我更新了我的示例以在linux上工作,现在应该清楚如何将其转换为OSX