I would like to expand a variable in Bash. Here\'s my example:
variable=\"{1,2,3}\"
echo $variable
Expected output:
1 2 3
This won't work first because double-quotes suppress brace expansion:
variable="{1,2,3}"
This still won't work because bash will not assign a list to a variable:
variable={1,2,3}
The solution is to assign your list to an array:
$ variable=( {1,2,3} )
$ echo "${variable[@]}"
1 2 3
The expansion doesn't work because of the order in which bash performs command-line expansion. If you read the man page you'll see the order is:
Parameter expansion happens after brace expansion, which means you can't put brace expansions inside variables like you're trying.
But never fear, there's an answer! To store a list of numbers in a variable, you can use an array.
variable=(1 2 3)
echo "${variable[@]}"