Passa uma string ou array como argumentos no bash

1

Eu tenho excludes como uma variável, onde ele deveria ser uma lista de expressões regulares para passar para o grep:

$ echo $excludes
-e re_1 -e re_2 -e re_3...

Eu gostaria de poder fazer algo como

$ my | pipeline | grep -v "${excludes}"

mas isso não funciona.

Eu também tentei usar uma matriz como em grep -v "${excludes[@]}" , onde cada membro da matriz é "-e blah". Isso não funcionou também.

Como posso passar argumentos de uma forma programática como essa?

    
por Jon Cohen 06.12.2017 / 20:49

1 resposta

2

A matriz funciona, mas você precisa armazenar as opções e os valores como elementos separados:

excludes=(-e "regex1" -e "regex2")
grep -v "${excludes[@]}" ...
    
por 06.12.2017 / 20:52