Prefixe todos os elementos de uma variável bash com uma string

Para o meu trabalho, frequentemente preciso despejar bancos de dados usando mysqldump. O que me irrita muito sobre esta ferramenta é que as tabelas ignoradas precisam ser especificadas usando

--ignore-table=<database>.<tablename>

Isso pode facilmente crescer para uma lista enorme do mesmo parâmetro.

Felizmente, descobri que o bash fornece um recurso para prefixar cada elemento de uma variável com uma string:

MYLIST=(var1 var2 var3)
echo $
{MYLIST[@]/#/my_}
# Output: my_var1 my_var2 my_var3

Juntos, você pode usar este script para despejar um banco de dados com mysqldump:

DATABASE="database1"
IGNORE_TABLES
=(table1 table2 table3)
echo mysqldump $
{IGNORE_TABLES[@]/#/--ignore-table=${DATABASE}.} ${DATABASE}
# Output: mysqldump --ignore-table=database1.table1 --ignore-table=database1.table2 --ignore-table=database1.table3 database1

PS: Também é possível definir um sufixo usando “%” em vez de “#”.