문자열이 BASH에서 유효한 경로를 나타내는지 확인하세요.

문자열이 BASH에서 유효한 경로를 나타내는지 확인하세요.

현재 다음과 같은 문자열 디렉터리가 있습니다. DESTDIR="/var/files/mydir/filedir/"

디렉토리가 존재한다는 점에 유의하십시오. 나는 이것을 확신했다.

디렉터리가 이미 존재하는지, 아니면 만들어야 하는지 확인해야 합니다. 현재 이 작업을 수행하기 위해 다음 방법을 사용하고 있습니다.

if [ -d  $DESTDIR ]; then
    echo the directory exists!
else
    echo the directory does not exist!
fi

그리고 디렉터리가 존재하더라도 이름을 복사하여 스크립트의 변수에 붙여넣습니다. 디렉터리는 항상 해당 else명령문으로 이동합니다. 뿐만 아니라 ls $DESTDIR스크립트에서 이 작업을 수행 하면 no such file or directory오류가 발생합니다. 그러나 ls $DESTDIR명령줄에서 실행하면 예상한 결과를 얻습니다.

$DESTDIR교체 를 시도했지만 "$DESTDIR"여전히 예상한 결과를 얻지 못했습니다.

답변1

이렇게 할 수 있습니다 mkdir -p "$DESTDIR". -p이 옵션은 오류가 이미 존재하는 경우 오류를 억제합니다.

답변2

$DESTDIR여기서 보면 (/var/files/mydir/file이라고도 함)은 실제로 /directory/가 아니라 /file/인 것처럼 보입니다 . 테스트 -d에서는 /directory/가 있는지 묻습니다. 출력을 확인 ls -ld $DESTDIR하여 확인하세요. $DESTDIR그것이 실제로 파일이라면, 테스트 -d는 올바른 일을 하고 있는 것입니다. 하지만 여러분이 기대한 것과는 다릅니다.

관련 정보