xargs
에서 aruments를 사용하려면
,이 스크립트입니다 :는
1 #!/bin/bash
2 array[0]=x
3 array[1]=y
4 echo array : ${array[0]}, ${array[1]}
5 echo -n {0..1} | xargs -I index -d" " echo index,${array[index]}
이는이다 출력 :
[[email protected] scripts]$ sh test.sh
array : x, y
0,x
1,x
배열을 올바르게 색인을 받아 들일 수 없다는 것을 알 수 있습니다. 항상 첫 번째입니다. 이와 같이, 내가 명령 echo
으로 예를 보여
array : x, y
0,x
1,y
은, 그러나, 내 진짜 목표는 다른 명령입니다 : : 어떻게 출력의이 종류를 얻을 수
echo -n {0..1} | xargs -I index -d" " somecommand ${array[index]}
을 그래서 내가 원하는 것을 이 질문의 일반적인 해결책.
그리고 나는 xargs
대신 parallel
을 시도했지만, 같은 문제가 있습니다.
이것은 아마도 당신이 원하는 방식으로 작동하지 않을 수 있습니다, 왜냐하면 배열은 쉘에만 존재하고'xargs'는 자식 프로세스를 생성함으로써 작동하기 때문입니다. xargs 커맨드 라인의'$ {...} '항목은 xargs가 실행되기 전에 한 번만 확장됩니다. 배열을 자식 프로세스에서 사용할 수 있도록 만들거나 xargs를 쉘 루프로 다시 작성해야합니다. –
@ WumpusQ.Wumbley 그렇지만'xargs'를 사용하여 병렬 처리를하고 싶기 때문에 셸 루프가 적절한 해결책이 될 수 없습니다 : ( –
배열을 환경의 목록으로 넣으려고하면 'xargs'로 시작하는 명령에서, 그러나 코너 케이스가있을 수 있습니다 ... –