Especificando parâmetros de linha de comando separados por vírgula com base em linhas de arquivo de texto

Especificando parâmetros de linha de comando separados por vírgula com base em linhas de arquivo de texto

Quero executar um comando como:

command argument --parameter=param1,param2,param3

onde param1, param2, param3 podem ser qualquer número de parâmetros provenientes de um arquivo params.txt, cada um em uma linha.

Posso criar uma lista correta de parâmetros com

echo $(cat common.modules) | tr " " ","

Mas tentando

command argument --parameter=$(cat params.txt) | tr " " ","

e suas variantes óbvias falham, provavelmente porque não consigo fazer algo assim funcionar:

echo $($(cat params.txt) | tr " " ",")

Qualquer ajuda muito apreciada.

Responder1

Vejamos este comando da pergunta:

command argument --parameter=$(cat params.txt) | tr " " ","

Isso executa o comando command argument --parameter=$(cat params.txt)e canaliza sua saída para tr " " ",". Não era isso que você precisava.

Tentar:

command argument --parameter="$(echo $(cat params.txt) | tr " " "," )"

Aqui, echo $(cat params.txt)faz com que a divisão de palavras seja feita no conteúdo de params.txt. Isso resulta em todos os parâmetros separados por espaço. Em seguida, tr " " ","substitua os espaços por vírgulas.

Observe que usando cato acima, mantemos a compatibilidade com POSIX. Isso significa, por exemplo, que este comando funcionará no shell padrão, /bin/shno Ubuntu e Debian e sistemas semelhantes.

Responder2

A respeito

command argument --parameter=$(tr '\n' ',' < params.txt)

informação relacionada