This is how to create associative arrays (hash, dictionary) on bash:
#!/bin/bash if [ "$1" == "help" ] then echo "Help"; echo "USAGE:"; echo "========"; echo "purge_landingpage_varnish.sh LIVE|STAGE"; exit 0; elif [ $1 ] then DOMAINS['LIVE']="www.ask-sheldon.com"; DOMAINS['STAGE']="stage.ask-sheldon.com; REQUEST_DOMAIN=""; if [ "$1" == "LIVE" -o "$1" == "STAGE" ] then REQUEST_DOMAIN=${DOMAINS["$1"]}; else echo "You have to give me the right instance parameters Master!!!"; exit -1; fi STORES=( 'de_de' \ 'at_de' \ 'be_en' \ 'bg_en' \ 'ch_de' \ 'cy_en' \ 'cz_en' \ 'dk_en' \ 'ee_en' \ 'es_en' \ 'fi_en' \ 'fr_fr' \ 'gr_en' \ 'hu_en' \ 'ie_en' \ 'it_en' \ 'lt_en' \ 'lu_en' \ 'lv_en' \ 'mt_en' \ 'nl_nl' \ 'pl_en' \ 'pt_en' \ 'ro_en' \ 'se_en' \ 'si_en' \ 'sk_en' \ 'uk_en' ); for sStore in ${STORES[@]} do echo "WILL RUN curl --include -X PURGE --header \"Host: $REQUEST_DOMAIN\" 192.168.73.11/$sStore/ now!!!"; curl --include -X PURGE --header "Host: $REQUEST_DOMAIN" 192.168.73.11/$sStore/; echo "DID RUN curl --include -X PURGE --header \"Host: $REQUEST_DOMAIN\" 192.168.73.11/$sStore/ !!!"; done; else echo "You have to give me the right params!!!"; exit -1; fi
This script was made to purge the varnish on one of my clusters. But the important stuff is the declaration of the associative array with DOMAINS[‘LIVE’]=”www.ask-sheldon.com”; and how to access the values of the array (with REQUEST_DOMAIN=${DOMAINS[“$1”]};). “$1” is the array key to select the value.
By the way, you can see how to crate a multi-line array (STORES) and how to run through it within a foreach loop (for sStore in ${STORES[@]} do […] done; ).