2012-04-19 2 views
4

xargs를 사용하여 스크립트를 중단하고 사용자 입력을 기다리고있는 스크립트에 인수를 채 웁니다. 다음과 같음 :xargs로 실행되는 스크립트에서 사용자를 묻는 방법

echo a b c | xargs bash -c 'for a in "[email protected]"; do echo $a; read; done' 

그러나 read은 무시됩니다. 두 번째 스크립트가 파이프에서 입력을 얻으려고하는 것 같습니다. 나는 xargs -p을 시도했지만 더 나은 것은 아니다.

답변

3

-axargs 인 경우 stdin 대신 파일에서 인수를 읽습니다. bash의 대체 프로세스<(...)을 사용하여 파일을 즉석에서 작성할 수 있습니다. 여기 [email protected] (이 경우 'A')는 제 인수 그리워

xargs -a <(echo A B C) bash -c 'for x in "[email protected]"; do echo $x; read; done' 

참고. 이는 bash -c$0 (일반적으로 스크립트 파일의 이름을 사용)에 'A'를 넣고 [email protected]$1, $2 등 (이 경우 'B'및 'C')을 제공하기 때문입니다.

+0

멋진! 감사 : (흥미로운 메모 : 여기에 "$ @"는 'b'와 'c'를 잡는다. 'a'는 $ 0에 저장되고, 'b'는 $ 1 등에 저장된다. – drevicko

관련 문제