Eu preferiria uma maneira simples de bash
:
command "${my_array[@]/#/-}" "$1"
Uma razão para isso são os espaços. Por exemplo, se você tiver:
my_array=(option1 'option2 with space' option3)
As soluções baseadas em sed
irão transformá-lo em -option1 -option2 -with -space -option3
(comprimento 5), mas a expansão bash
acima irá transformá-lo em -option1 -option2 with space -option3
(comprimento ainda 3). Raramente, mas às vezes isso é importante, por exemplo:
bash-4.2$ my_array=('Ffoo bar' 'vOFS=fiz baz')
bash-4.2$ echo 'one foo bar two foo bar three foo bar four' | awk "${my_array[@]/#/-}" '{print$2,$3}'
two fiz baz three