xargs에서 일시 중지(읽기 또는 유사)

xargs에서 일시 중지(읽기 또는 유사)

아래와 같은 스크립트가 있습니다.

find /path -type f |
sed -re 'stuff' |
xargs -Ix sh -c '{
  echo "information about x"
  ./exe < x
  read
}'

내 목표는 각 파일 xargsexe. 대신, 각 파일의 출력을 연구하고 해당 출력을 연구한 후 계속하고 exe싶습니다 . exe그래서 나는 가지고있다 read.

문제는 read여기서는 작동하지 않는 것 같습니다. 스크립트를 실행하면 모든 출력이 생성됩니다. 이 문제를 해결하는 방법에 대한 제안 사항이 있습니까?

참고해주세요 저는아니요처형을 자할 방법을 찾고 있습니다 xargs. 대신 xargs사용자가 계속하기를 원할 때까지 무기한 일시 중지할 수 있는 방법을 찾고 있습니다 .

답변1

read다음과 같이 입력을 에서 로 리디렉션할 수 있습니다 /dev/tty.

read reply < /dev/tty

xargs각 파일을 처리하기 위해 새 셸을 사용하거나 직접 실행하지 않고도 셸에서 동일한 결과를 효과적으로 얻을 수 있습니다 .

find /path -type f |
sed -re 'stuff' |
while IFS= read -r x
do
    echo "information about $x"
    ./exe < "$x"
    read reply < /dev/tty
done

나는 이 접근 방식이 더 효율적이고(이 대화형 상황에서는 실제로 문제가 되지 않음) 더 이식성이 뛰어나고 구문이 덜 필요하며 읽고 유지하기가 더 쉽다는 것을 알게 될 것입니다.

관련 정보