Formato exato dos parâmetros xargs -I?

2

Na verdade, eu gostaria de saber o formato exato do parâmetro '-I' (string, variante, etc.)

para um script como este,

seq 15 | xargs -I num

seq 15 | xargs -I num bash -c "echo num"

funcionará

O 'num' aqui eu considero como um parâmetro para a execução do script no bash -c "" enquanto não tenho certeza sobre o formato do num quando é introduzido no bash

Tente

seq 15 | xargs -I num bash -c "name=num; echo name"

considerou como uma string enquanto falhava.

Tente

seq 15 | xargs -I num bash -c "name=num; echo $name"

também não funcionou.

Eu só quero tentar o multithreading com --max-procs para limitar o número de threads, enquanto eu não tenho certeza sobre tal problema, enquanto eu acho que talvez seja algo sobre o '=' coisa. Como posso fazer isso funcionar como eu quero?

    
por fredzhou 08.11.2014 / 04:58

2 respostas

1

num é apenas substituído por cada sequência de dígitos da saída seq.

Suas tentativas de atribuir a name onde estiver correto, mas para exibir, você escapou do $ :

seq 15 | xargs -I num bash -c "name=num; echo \$name"

se você tivesse tentado:

name=hallo; seq 15 | xargs -I num bash -c "name=num; echo $name"

você provavelmente teria notado.

    
por 08.11.2014 / 05:11
1

Anthon já explicou seu erro. Gostaria de acrescentar que existe uma solução melhor para o caso bash -c '' :

seq 15 | xargs -L 1 bash -c 'name=$1; echo $name' foo

Isso é melhor porque é mais flexível. Você pode passar mais de um parâmetro (provavelmente não é útil com seq input).

    
por 08.11.2014 / 05:22

Tags