I have the following lines in my .cfg bash script fileDDF_SOURCE=siebel_DATA_DATE_FORMATDATA_DATE_FORMAT=${!DDF_SOURCE}how is ${!DDF_SOURCE} evaluated? It would be !siebel_DATA_DATE_FORMAT, which doesn't make sense to me.
Variable substitution with an exclamation mark in bash
bash;variable substitution
That is an indirect expansion, documented in man bash section EXPANSION, subsection Parameter Expansion:If the first character of parameter is an exclamation point (!), a  level of variable indirection is introduced.  Bash uses the value of  the variable formed from the rest of parameter as the name of the  variable; this variable is then expanded and that value is used in the  rest of the substitution, rather than the value of parameter itself.   This is known as indirect expansion.bash-4.2$ DDF_SOURCE=siebel_DATA_DATE_FORMATbash-4.2$ siebel_DATA_DATE_FORMAT='Hello Indirect Redirection'bash-4.2$ DATA_DATE_FORMAT=${!DDF_SOURCE} # siebel_DATA_DATE_FORMAT must get value before this linebash-4.2$ echo $DATA_DATE_FORMATHello Indirect Redirection