“Lista de argumentos longa demais” durante a execução de recortar e sed em um subshell para definir uma variável

2

Eu escrevi um script bash com um código python embutido nele. O que eu fiz foi ler o arquivo e cortá-lo com os comandos bash abaixo e depois eu o exportei para que o código python pudesse usá-lo:

export BWA_compare=$(cut --output-delimiter='' -f1-3 ${BWA_AT}| sed 1d)

O problema é que eu pego

/bin/cut: Argument list too long
/bin/sed: Argument list too long

Funciona em arquivos menores. Existe um limite de quanto você pode exportar?

    
por crysis405 01.11.2014 / 20:19

1 resposta

1

Existem limites para o número de argumentos e o comprimento combinado dos argumentos. Estes não são valores uniformes, mas dependem do sistema.

Normalmente, esses problemas são resolvidos com xargs .

Mas parece-me que você está usando cut erroneamente. cut espera que apenas arquivos sejam argumentos. ${BWA_AT} é uma lista enorme de arquivos? Se é o código Python, então você precisa de algo como

echo "${BWA_AT}" | cut

Se realmente é uma lista de arquivos, então você precisa de algo como

echo "${BWA_AT}" | xargs cut

com as opções necessárias de xargs , dependendo do separador.

    
por 01.11.2014 / 22:29

Tags