J'ai les lignes suivantes dans mon fichier de script .cfg bash
DDF_SOURCE="siebel_DATA_DATE_FORMAT"
DATA_DATE_FORMAT=${!DDF_SOURCE}
comment ${!DDF_SOURCE
} est-il évalué? Ce serait !siebel_DATA_DATE_FORMAT
, ce qui n'a pas de sens pour moi.
J'ai les lignes suivantes dans mon fichier de script .cfg bash
DDF_SOURCE="siebel_DATA_DATE_FORMAT"
DATA_DATE_FORMAT=${!DDF_SOURCE}
comment ${!DDF_SOURCE
} est-il évalué? Ce serait !siebel_DATA_DATE_FORMAT
, ce qui n'a pas de sens pour moi.
Il s’agit d’une expansion indirecte , documentée dans la man bash
section EXPANSION , sous-section Paramètre Expansion :
Si le premier caractère du paramètre est un point d'exclamation (!), Un niveau d'indirection de variable est introduit. Bash utilise la valeur de la variable formée à partir du reste du paramètre comme nom de la variable. cette variable est ensuite développée et cette valeur est utilisée dans le reste de la substitution, plutôt que la valeur du paramètre lui-même. Ceci est connu sous le nom d'expansion indirecte.
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