현재 다음과 같은 문자열 디렉터리가 있습니다.
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
는 올바른 일을 하고 있는 것입니다. 하지만 여러분이 기대한 것과는 다릅니다.