Fornece o comutador de linha de comando após a saída xargs

1

Dado que eu uso este comando:

outputStuff.sh | awk -F"-" '{print $5"-"$6}' | xargs someTool (XARGS OUTPUT HERE) --someCommandLineSwitchHere

No entanto, preciso fornecer o switch de linha de comando após a saída xargs? Alguém já abordou esse problema?

    
por nottinhill 16.11.2017 / 13:40

1 resposta

2

Portanto, o sinalizador é para someTool , mas deve vir depois dos arquivos de entrada ... usar um subshell oferece a você todos os tipos de flexibilidade:

xargs sh -c 'someTool "$@" --someCommandLineSwitchHere' someTool

Depois de xargs processar isso efetivamente se torna

xargs sh -c 'someTool "$@" --someCommandLineSwitchHere' someTool item1 item2 ... itemN

... e tudo na linha de comando depois que a única string entre aspas se torna argumentos de entrada para sh (parâmetros posicionais). Estes começam em $0 e como $0 é geralmente o comando que está sendo executado, nós apenas usamos someTool (embora qualquer coisa seja permitida aqui). Tudo o que resta é adicionado por xargs e são seus parâmetros posicionais normais: $1 , $2 e assim por diante.

    
por 16.11.2017 / 14:19