Ich versuche, eine String-Variable (ein Array hier) zu ersetzen, aber ich bekomme einen Fehler. Könnte jemand vorschlagen, wie man das löst?Ersetzen Sie eine String-Variable in den Namen eines Arrays
COMP="MY"
MY_common_sections_to_fix=(\
".rodata" \
".data" \
)
echo ${${COMP}_common_sections_to_fix[@]}
ERROR:
$ {$ {COMP} _common_sections_to_fix [@]}: bad Substitution
Welche Version von bash? Es gibt einen praktischen Einbau in 4.4. –
Da das Array, das Sie initialisiert haben, 'MY_common_sections_to_fix' ist, Sie aber versuchen,' L1CC_common_sections_to_fix' zu erreichen, ist das eine Stufe der Überraschung. Problematisch ist jedoch auch die dynamische Benennung von Variablen. Sie könnten eine Variable erstellen, die 'MY_common_sections_to_fix' enthält und herausfinden, wie man' $ {! Varname [@]} 'oder so etwas ausnutzt - ungetestet, aber' $ {! Var} 'verweist auf die Variable mit dem in' $ var' gespeicherten Namen . (Semi-tested: die Ergebnisse sehen nicht vielversprechend aus. Angenommen, dass es bis auf weiteres nicht funktioniert!) –
Weitere Anmerkung: es wird nicht funktionieren - siehe [Shell-Parameter-Erweiterung] (https://www.gnu.org /software/bash/manual/bash.html#Shell-Parameter-Expansion) im Bash-Handbuch. Offenbar können Sie Array-Namen nicht indirekt erweitern. –