행동
사용자 프로필에 환경 변수를 설정했습니다.
export DATADIR=<absolute path set with `readlink -e target`>
예상되는 결과
구성 파일을 다시 가져온 후 대상에 연결되어 있는지 확인합니다.
echo ${DATADIR}; ls ${DATADIR}
이것은 패스입니다. 제가 테스트를 해보면
test -d ${DATADIR} && echo yes || echo no
이것은통과할 것으로 예상됨그리고 (결과는 "이다")
예상치 못한 결과
그러나 왜곡된 이름과 같이 전혀 정의되지 않은 다른 디렉토리 이름을 제공하면 테스트는
test -d ${HJIWEODSB} && echo yes || echo no
나한테도 그렇다고 대답해줘, 그건예상치 못한 통과, 이 이름은 파일도 디렉터리도 아니기 때문입니다.
기대했던 결과를 다시 달성
실제로
test -d && echo yes || echo no
'예'라고 하면 다음으로 시작하는 것 같아요.ls
질문
테스트를 위해 매뉴얼 페이지와 이 페이지를 보았습니다.생명선. 어쩌면 내가 그들에 대해 간과하고 있는 것일 수도 있습니다. 요약하자면, 디렉토리가 존재하는지에 대한 신뢰할 수 있는 테스트가 필요합니다. 수정 및 조언 환영합니다.
물론, 반대 투표를 하셔도 됩니다. 그러나 이것이 유용하지 않거나 불분명하거나 연구 노력이 없음을 나타내는 이유에 대한 제안은 감사하겠습니다.
답변1
사실 이 글을 쓴 덕분에 답을 찾았습니다.
예상된 결과를 얻으려면 변수 이름을 따옴표로 묶습니다.
test -d "${DATADIR}" && echo yes || echo no
주어진 반면
test -d "${GIBBERISH}" && echo yes || echo no
아니오.
(메타 댓글: 미래의 독자들이 도움을 받을 수 있기 때문에 내 질문을 삭제하지 않기로 결정했습니다. 중재자가 이것이 적절한지 결정하도록 하십시오.)