"${my_array[@]/#/-}" 中的 /#/- 是什么类型的操作?

Jus*_*tin 18 bash array

数组转换为命令参数的公认答案使用以下 Bash 命令:

command "${my_array[@]/#/-}" "$1"
Run Code Online (Sandbox Code Playgroud)

我正试图弄清楚这/#/-部分到底是做什么的。不幸的是,我不知道该怎么称呼它,所以我很难找到任何文档。我已经浏览了有关数组和一些网站的 Bash 手册页部分,但找不到任何内容。

Ste*_*itt 25

这是shell 参数扩展中模式替换的一个实例:${parameter/pattern/replacement}扩展${parameter},替换patternwith的第一个实例replacement。在这种模式的上下文中,#它是特殊的:它将模式锚定到参数的开头。所有这一切的最终结果是扩展my_array数组中的所有值,在-每个值之前添加(通过替换每个参数开头的空模式)。