
run.sh
다음과 같은 스크립트가 있습니다 .
#!/bin/bash
FILES=$(find corpus/ -type f)
for i in $FILES
do
./individual.sh $i
done
문제없이 실행됩니다.
각 파일을 find에서 으로 전송하고 싶습니다 ./individual
.
나는 이것을 할 수 있다고 생각합니다 :
find corpus/ -type f | ./individual.sh
하지만 시도해 보면 ""라는 파일만 파이프로 연결됩니다(오류 발생).
올바른 구문은 무엇입니까?
답변1
find 옵션을 사용해야 합니다 -exec
:
find corpus/ -type f -exec ./individual.sh {} \;
발견된 각 일치 항목 에 대해 find
personal.sh를 실행하고 이를 {}
발견된 파일 이름으로 바꿉니다. \;
이렇게 해서 exec
찾기가 끝납니다.
파이프가 작동하지 않는 이유는 find 출력이 individual.sh
매개변수가 아닌 STDIN을 통해 제공되기 때문입니다. 스크립트를 사용하려면 STDIN을 통해 입력 또는 매개변수를 조회하는 방법을 알아야 합니다.