실제로 "-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
num
seq에 의해 출력된 각 숫자 문자열로 대체되었습니다.
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
입력에는 유용하지 않을 수 있음).