Antworten:
Dies ist eine indirekte Erweiterung , dokumentiert in man bash
Abschnitt EXPANSION , Unterabschnitt Parametererweiterung :
Wenn das erste Zeichen des Parameters ein Ausrufezeichen (!) Ist, wird eine Stufe der variablen Indirektion eingeführt. Bash verwendet den Wert der aus dem Rest des Parameters gebildeten Variablen als Namen der Variablen. Diese Variable wird dann erweitert und dieser Wert wird im Rest der Ersetzung verwendet und nicht der Wert des Parameters selbst. Dies wird als indirekte Expansion bezeichnet.
bash-4.2$ DDF_SOURCE="siebel_DATA_DATE_FORMAT"
bash-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 line
bash-4.2$ echo $DATA_DATE_FORMAT
Hello Indirect Redirection