나는 스크립트를 쓰고 있었고 다음과 같이 썼다.
ARTIFACTS="/SOME/PATH"
[ -d $ARTIFCATS ] && rm -rf $ARTIFACTS/*
일어난 일은 어리 석음으로 인해 첫 번째 줄을 실행하지 않고 두 번째 줄을 실행했습니다. [-d ""]는 true를 반환하고 표현식은
rm -rf /*
운 좋게도 그것은 단지 테스트 머신이었고 나는 sudo가 아니었지만 데이터를 잃어 버렸지 만
내 질문은 왜 [-d ""]가 true를 반환하는 것입니까? 문서에는 경로가 존재하고 폴더인지 확인하는 내용이 명확하게 나와 있습니다.
나는을 사용하여 문제를 해결했다.
[ -e $ARTIFACTS ]
작동하는 것 같습니다
건배
rm -rf $ARTIFACTS없이 그것을 쓸 것 /*입니다. 이것은 $ARTIFACTS디렉토리를 삭제합니다. 디렉토리에 무언가를 넣기 전에 디렉토리가 존재하는지 확인하려면 mkdir -p $ARTIFACTS어쨌든 실행하기 때문입니다. 또한 내부 파일을 숨겨 삭제합니다 $ARTIFACTS내가 쓸 때문에, 미세 또한 인 rm -rf $ARTIFACTS/*경우 $ARTIFACTS포함 된 것도 내가 저장하고 싶어합니다.