2010-05-24 5 views
0

파일이 스크립트에 전달 될 때 디렉토리 경로가 존재하는지 테스트하려고합니다. 나는 dirname을 사용하여 경로를 제거하고 저장합니다. 경로가있는 경우에만 스크립트를 실행하고 싶습니다. 이것은 아래의 시도입니다.쉘 스크립팅 및 테스트 표현

FILE = $ 1 DIRNAME = dirname $FILE

경우 [-z $ DIRNAME]; then echo "파일 경로 오류가 없습니다." exit 1 fi

그러나 이것은 작동하지 않습니다. 실제 파일 경로가 없을 때 dirname $FILE은 여전히 ​​"."을 반환합니다. DIRNAME, 즉이 디렉토리에 추가하십시오. 그러면 어떻게 구별합니까? " 및 "/ bla/bla/bla".

감사합니다.

답변

0

왜 안

 
if [ -a $1] ; then echo "found file"; fi 

사용할 수 있습니까?

+0

이 파일의 경로가 존재하는지 여부 사실이다 :

은 어쩌면 이것은 당신이 찾고있는 것입니다. DIRNAME이 (가) 채워지거나 보유하고 있는지 어떻게 테스트 할 수 있습니까? " – Paul

+0

[$ DIRNAME == "."] 경우 과 같이 간단합니다. ]; then 이것이 더 일찍 작동하지 않는 이유를 모르겠습니다. 틀림없이 다른 곳에서 실수를 한 것 같습니다. 대단히 감사합니다. – Paul

+0

폴, 당신이 알아 낸 것을 기쁘게 생각합니다 - 그리고 내 답변이 당신이 찾고있는 것이 아니란 것을 유감스럽게 생각합니다. 작업에서 게시 한 코드를 방지하는 오타는 쉽게 작성하고 힘들 수 있습니다. – atk

0

dirname이 파일 시스템을 확인하고 있습니까? 어떤 OS를 사용하고 있습니까? 대부분의 dirnames는 문자열 조작 만하면됩니다. 따라서 :

dirname /one/two/three 

/1/존재하지 않더라도 1/2가 반환됩니다.

FILE=$1 
DIRNAME=`dirname "$FILE"` 
if [ ! -d "$DIRNAME" ]; then 
    echo "$DIRNAME doesn't exist" >&2 
    exit 1 
fi 
+0

감사합니다. 나는 나중에 이것을 확인한다. 나는 곧 끝내야 할 무언가에 빠져있다. – Paul