#!/bin/bash ARRAY_GetArrays() { return 1 } function ARRAY_New() { if [[ $1 != '' ]] then eval " function ARRAY_GetArrays() { builtin echo '$@' '$(ARRAY_GetArrays)' return 0 } " fi } function ARRAY_Get() { return 1 } function ARRAY_Let() { return 0 # WHAT THE HELL TO DO HERE? IT SEEMS TO BE A SORT OF "BRAINFUCK" # SEE THE FINAL ARRAY_Let() BELOW... } ARRAY_New 'foo' # ^^^ Array names can not have space in them... ARRAY_New 'bar' ARRAY_GetArrays # Prints array names... # ----------------------------------------------------------- ARRAY_Let 'foo' 'test 1' 'tset 1' # ^^^^^^ Index names can have any character in them... ARRAY_Let 'foo' 'test 2' 'tset 2' ARRAY_Let 'foo' 'test 3' 'tset 3' ARRAY_Let 'bar' 'hokus 1' 'sukoh 1' ARRAY_Let 'bar' 'hokus 2' 'sukoh 2' ARRAY_Let 'bar' 'hokus 3' 'sukoh 3' # ------------------------------------------------------------ # THIS IS WHAT THE RESULTING FUNCTION SHOULD BE LIKE ARRAY_Get() { case $1 in 'foo x') case $2 in 'test 1') echo 'tset 1';; 'test 2') echo 'tset 2';; 'test 3') echo 'tset 3';; esac ;; 'bar y') case $2 in 'hokus 1') echo 'sukoh 1';; 'hokus 2') echo 'sukoh 2';; 'hokus 3') echo 'sukoh 3';; esac ;; esac } ARRAY_Get 'bar y' 'hokus 3' exit 0