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 “#”.