我想在bash中展开一个变量。这是我的示例:
variable="{1,2,3}"
echo $variable
预期输出:
1 2 3
实际输出:
{1,2,3}
由于BASH执行命令行扩展的顺序,扩展不起作用。如果您阅读了男人页面,您会看到订单是:
- BRACE扩展
- Tilde扩展
- 参数扩展
- 命令替代
- 算术扩展
- 流程替代
- 单词拆分
- 路径名扩展
- 报价删除
参数扩展发生在撑杆扩展之后,这意味着您不能像尝试一样将支架扩展放入变量内。
但永远不要担心,有答案!要将数字列表存储在变量中,您可以使用数组。
variable=(1 2 3)
echo "${variable[@]}"
这是不起作用的,因为双引号抑制了支撑式扩展:
variable="{1,2,3}"
这仍然行不通,因为bash不会将列表分配给变量:
variable={1,2,3}
解决方案是将您的列表分配给 array :
$ variable=( {1,2,3} )
$ echo "${variable[@]}"
1 2 3