인수로 많은 파일 및 / 또는 디렉토리를 취하는 간단한 bash 함수를 작성하려고합니다. 다음과 같아야합니다.
- 파일 이름을 완전히 규정하십시오.
- 그것들을 정렬하십시오.
- 중복을 제거하십시오.
- 실제로 존재하는 모든 것을 인쇄하십시오.
- 존재하지 않는 파일 수를 반환합니다.
나는 내가 원하는 것을 거의 수행하지만 정렬에 빠지는 스크립트가 있습니다. 스크립트의 반환 값은 정확하지만 출력이 정렬되지 않고 복제되지 않습니다. | sort -u
표시된대로 명령문의 주석을 해제하면 출력은 정확하지만 리턴 값은 항상 0
입니다.
NB 문제를 해결하기위한 간단한 솔루션은 환영하지만 실제로 내가 가진 코드에서 이것이 왜 발생하는지에 대한 질문입니다. 즉, 파이프를 추가하면 스크립트가 변수 증가를 중지하는 것처럼 보이는 이유는 r
무엇입니까?
스크립트는 다음과 같습니다.
function uniqfile
{
local r=0
for arg in "$@"
do
readlink -e "$arg" || (( ++r ))
done #| sort -u ## remove that comment
return $r
}
for arg in "$@"
로for arg
. " 'WORDS에서 ...;' 이 없으면 'in $ "로 가정합니다." -도움말