스크립팅: [! -d dir ] 의미

스크립팅: [! -d dir ] 의미
if [ ! -d /home/dir ]; then

   mkdir /home/dir

fi

어느 날 친구와 저는 수업 시간에 이런 질문을 받았습니다. 우리 둘 다 그것에 대해 서로 다른 대답을 했습니다. 하지만 저는 그 친구에게 제가 옳을 수도 있다는 것을 증명하고 싶었습니다.

그는 "/home/dir 디렉토리가 존재하지 않는 경우에만 생성한다"고 말합니다.

나는 아니오라고 말했습니다. "/home/dir 디렉토리를 삭제하고 다시 생성하십시오"

누가 옳습니까? ...아니면 우리 모두가 틀렸나요?

답변1

당신의 친구가 거의 옳습니다. 스크립트는 /home/dir아직 디렉토리가 아닌 경우에만 생성됩니다. (다른 것이라면 mkdir실행은 되지만 실패할 것입니다.)

[테스트를 소개합니다 ! -d /home/dir. 여기에 존재하고 디렉토리인지 -d /home/dir확인한 다음 이를 무효화합니다. 이 모든 것이 / 에 포함된다는 것은 아직 디렉토리가 아닌 경우 실행 중임을 의미합니다 ./home/dir!ifthen/home/dirmkdir /home/dir

구체적으로 mkdir모든 것을 좀 더 간결하게 작성하세요.

mkdir -p /home/dir

답변2

당신의 친구 말이 맞습니다. "그렇지 않으면 디렉토리입니다"처럼

하지만 그에게 조건 전체를 취소하고 그냥 써도 된다고 말해주세요mkdir -p /home/dir

관련 정보