xargs -I 인수의 정확한 형식은 무엇입니까?

xargs -I 인수의 정확한 형식은 무엇입니까?

실제로 "-I" 매개변수(문자열, 변형 등)의 정확한 형식을 알고 싶습니다.

이와 같은 스크립트의 경우

seq 15 | xargs -I num

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

작동할 것이다

여기서 "num"은 bash -c ""에서 스크립트를 실행하는 매개변수인 것 같은데, bash에 num을 도입할 때 형식이 확실하지 않습니다.

노력하다

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

실패 시 문자열로 처리합니다.

노력하다

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

그것도 소용없어요.

스레드 수를 제한하기 위해 멀티스레딩을 시도하고 싶었습니다 --max-procs. 문제에 대해 잘 모르겠지만 "="에 관한 것일 수도 있다고 추측합니다. 내가 원하는 대로 작동하게 하려면 어떻게 해야 할까요?

답변1

numseq에 의해 출력된 각 숫자 문자열로 대체되었습니다.

name올바른 위치 에 할당하려고 시도했지만 탈출했다고 표시됩니다 $.

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

시도한다면:

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

눈치챌 수도 있습니다.

답변2

Anton이 당신의 실수를 설명했습니다. bash -c ''이 상황에 대한 더 나은 해결책이 있다고 덧붙이고 싶습니다 .

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

더 유연하기 때문에 더 좋습니다. 여러 매개변수를 전달할 수 있습니다( seq입력에는 유용하지 않을 수 있음).

관련 정보