Da documentação de bash
, seção Expansão de contraventamento :
Brace expansion is performed before any other expansions, and any characters special to other expansions are preserved in the result. It is strictly textual. Bash does not apply any syntactic interpretation to the context of the expansion or the text between the braces. To avoid conflicts with parameter expansion, the string ‘${’ is not considered eligible for brace expansion.
Outra nota, em bash
:
The order of expansions is: brace expansion, tilde expansion, parameter, variable, and arithmetic expansion and command substitution (done in a left-to-right fashion), word splitting, and filename expansion.
Portanto, no seu caso, bash
viu expansão de contraventamento antes da expansão da variável, ele fará a expansão de contraventamento primeiro, produzirá o resultado {Alpha,Bravo,Charlie}
.
Se você pode controlar o conteúdo da variável $find_dir
, você pode usar eval
:
eval "find Directory/{$find_dir} arg1 arg2"