Não há como passar um argumento entre executáveis se ele for maior que o limite ARG_MAX
do kernel.
Se você tem uma lista de argumentos que é muito longa, pode-se dividir em pedaços menores, por exemplo. com xargs
. Isso executa o comando quantas vezes forem necessárias, fornecendo tantos argumentos quanto couberem.
A sintaxe é xargs command <file
. Se você omitir command
, ele exibirá seus argumentos, como echo
.
Como demonstração,
xargs -n 4 </etc/motd
imprimirá os primeiros quatro tokens em uma linha (primeira invocação), os próximos quatro em outro, etc. (O argumento -n
define um número máximo de argumentos, portanto, isso não usa o limite ARG_MAX
em tudo.)
Se o comando que você deseja executar tiver efeitos colaterais indesejáveis, isso pode não funcionar. Por exemplo, se o command
sobrescrever qualquer arquivo ./a.out
previamente existente, você obviamente ficará com os resultados da última execução após a conclusão.
Se você puder configurar ou modificar command
para ler um arquivo ou entrada padrão, em vez de um argumento de linha de comando, isso funcionará em torno da restrição. Um arquivo ou fluxo pode ser muito maior que ARG_MAX
e geralmente é.