Expansão do cartão Bash com o comutador da linha de comandos

1

Estou usando um comando que recebe a entrada do formulário

command [-a input_files]*

Para que eu possa chamar command -a foo ou command -a foo -a bar -a baz .

Agora, estou tentando automatizar um fluxo de trabalho e gostaria de passar todos os arquivos em um diretório para o comando. Existe uma maneira de obter um curinga para fazer isso? Eu sei sobre * , mas isso não me permite inserir o prefixo obrigatório -a : command * apenas executaria command foo bar baz .

Essa operação é possivelmente nativa no bash, ou eu precisarei usar sed, etc.?

    
por baum 05.07.2017 / 22:27

2 respostas

2

Provavelmente, o caminho mais curto é usar printf:

lcov $(printf -- ' -a %s' *)

Mas ainda pode falhar em alguns programas, teste e reporte.

    
por 06.07.2017 / 03:45
0

Crie uma matriz args que tenha -a à frente de cada arquivo ( * ) e execute command com toda a lista:

for f in *
do
  args+=(-a "$f")
done
command "${args[@]}"
    
por 06.07.2017 / 01:41