emcek
emcek

Reputation: 535

Select random variable in Bash

I need print value of (i.e. CadetBlue) random var from COLOUR_* I tried"

echo $COLOUR_${NUMBER}
echo "$COLOUR_${NUMBER}"

and many others and none is working.

I Have bash:

#!/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

Upvotes: 2

Views: 3041

Answers (2)

perreal
perreal

Reputation: 97948

Or use an array:

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

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

echo ${COLOURS[$NUMBER]}

Upvotes: 5

devnull
devnull

Reputation: 123488

Instead of saying

echo $COLOUR_$NUMBER

say:

color=COLOUR_${NUMBER}
echo ${!color}

You can read more about indirect expansion here.

Upvotes: 5

Related Questions