在Bash中选择随机变量

emc*_*cek 2 random variables bash

我需要来自COLOUR_*的打印值(即CadetBlue)随机变量*我试过"

echo $COLOUR_${NUMBER}
echo "$COLOUR_${NUMBER}"
Run Code Online (Sandbox Code Playgroud)

和许多其他人都没有工作.

我有打击:

#!/bin/bash
NUMBER=$[ ( $RANDOM % 9 )  + 1 ]
echo $NUMBER

COLOUR_1=AliceBlue
COLOUR_2=AntiqueWhite
COLOUR_3=AntiqueWhite1
COLOUR_4=AntiqueWhite2
COLOUR_5=AntiqueWhite3
COLOUR_6=AntiqueWhite4
COLOUR_7=BlanchedAlmond
COLOUR_8=BlueViolet
COLOUR_9=CadetBlue

echo $COLOUR_$NUMBER
Run Code Online (Sandbox Code Playgroud)

per*_*eal 5

或使用数组:

#!/bin/bash
NUMBER=$(( $RANDOM % 9 ))
echo $NUMBER

COLOURS=(AliceBlue AntiqueWhite AntiqueWhite1 AntiqueWhite2
    AntiqueWhite3 AntiqueWhite4 BlanchedAlmond BlueViolet CadetBlue)

echo ${COLOURS[$NUMBER]}
Run Code Online (Sandbox Code Playgroud)


dev*_*ull 5

而不是说

echo $COLOUR_$NUMBER
Run Code Online (Sandbox Code Playgroud)

说:

color=COLOUR_${NUMBER}
echo ${!color}
Run Code Online (Sandbox Code Playgroud)

您可以在此处详细了解间接扩展 .