从函数中获取值,使用该值在 shell 中获取彩色输出

Getting value from function, use that value to get colored output in shell

(使用 zsh)每当我在终端中打开一个新选项卡时,我只是想获得随机颜色输出。为此,我编写了以下 shell 脚本,但它没有按预期工作:

#Standard Colors
red='3[0;31m'
NC='3[0m' # No Color
black='3[0;30m'
blue='3[0;34m'
green='3[0;32m'
cyan='3[0;36m'
purple='3[0;35m'
yellow='3[1;33m'
lgreen='3[1;32m'
lblue='3[1;34m'
lred='3[1;31m'
lcyan='3[1;36m'
#Array color
colr=(red blue green cyan purple yellow lgreen lblue lred lcyan)

#Get random number for colors
randcolr()
{
  sz=${#colr[@]}
  randval=$(( ( RANDOM % sz )  + 1 ))
  echo "${colr[randval]}"
}

echo -e "$(randcolr)TESTING"

它没有得到彩色输出,而是写了颜色的名称和 "TESTING" 例如lgreenTESTING。有帮助吗?(我正在使用 zsh)

函数randcolr总是在终端内给出相同的值。

定义数组时,您使用的是字符串而不是变量:

colr=(red blue green cyan purple yellow lgreen lblue lred lcyan)

应该是:

colr=($red $blue $green $cyan $purple $yellow $lgreen $lblue $lred $lcyan)