아래와 같은 스크립트가 있습니다.
find /path -type f |
sed -re 'stuff' |
xargs -Ix sh -c '{
echo "information about x"
./exe < x
read
}'
내 목표는 각 파일 xargs
을 exe
. 대신, 각 파일의 출력을 연구하고 해당 출력을 연구한 후 계속하고 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
나는 이 접근 방식이 더 효율적이고(이 대화형 상황에서는 실제로 문제가 되지 않음) 더 이식성이 뛰어나고 구문이 덜 필요하며 읽고 유지하기가 더 쉽다는 것을 알게 될 것입니다.