Solaris 10을 사용하고 있으며 ksh (88), bash (3.00) 및 zsh (4.2.1)로 다음을 테스트했습니다.
다음 코드는 결과를 생성하지 않습니다.
function foo {
echo "Hello World"
}
find somedir -exec foo \;
찾기는 여러 파일과 일치하며 (로 대체 -exec ...
하여 -print
표시됨)이 함수는 호출 외부에서 find
호출 될 때 완벽하게 작동합니다 .
man find
페이지에 대한 내용은 다음과 같습니다 -exec
.
-exec 명령 실행 된 명령이 a를 반환하면 true 종료 상태로 0 값. 끝 이스케이프 처리 된 명령은 문장 부호를 사용해야합니다. 세미콜론 (;). 명령 인수 {}는 현재 경로 이름으로 대체됩니다. 만약 -exec의 마지막 인수는 {}이고 세미콜론 (;) 대신 +를 지정하십시오. 명령이 더 적은 횟수로 호출됩니다. {}는 경로 이름 그룹으로 대체되었습니다. 만약 명령을 호출하면 종료 상태로 0이 아닌 값, 찾기 0이 아닌 종료 상태를 반환합니다.
아마 다음과 같은 일을 할 수 있습니다.
for f in $(find somedir); do
foo
done
그러나 필드 구분 기호 문제를 처리하는 것이 두렵습니다.
호출에서 쉘 함수를 호출 할 수 있습니까 (동일한 스크립트에 정의되어 있고, 범위 지정 문제를 해결하지 find ... -exec ...
않겠습니까)?
나는 모두 그것을 시도 /usr/bin/find
와 /bin/find
같은 결과를 얻었다.
export -f foo