케이스/스위치를 사용하여 폴더가 있는지 확인하세요.

케이스/스위치를 사용하여 폴더가 있는지 확인하세요.

폴더가 존재하는지 확인하기 위해 사례를 사용할 수 있습니까?

이 폴더가 있습니다. 폴더가 존재하는지 확인한 다음 뭔가를 해야 합니다. 5개의 폴더를 확인해야 하고 폴더가 존재하는 경우 각 폴더에서 다른 콘텐츠를 처리해야 합니다. 할 수 있나요?

그렇지 않다면 가장 좋은 접근 방식은 무엇입니까? 어쩌면 여러 개의 if 문이 있을까요?

답변1

Case 문은 if/then과 같은 조건부 평가를 수행할 수 없습니다. 케이스/스위치는 실제로 패턴을 일치시키고 일치를 기반으로 특정 케이스를 실행할 수 있습니다.

잠재적인 솔루션

[ .. ]이렇게 사용하기 시작하겠습니다.

[ -d /path/to/folder1 ] && echo cmd1
[ -d /path/to/folder2 ] && echo cmd2
[ -d /path/to/folder3 ] && echo cmd3
[ -d /path/to/folder4 ] && echo cmd4
[ -d /path/to/folder5 ] && echo cmd5

나중에 더 복잡한 명령을 실행해야 하는 경우 형식적인 if/then으로 전환하는 것이 좋습니다.

if [ -d /path/to/folder1 ]; then
  cmd1;
fi

답변2

물론 glob/case를 혼합하여 사용하여 이 작업을 수행할 수 있습니다.

단일 폴더의 경우 다음을 수행할 수 있습니다.

set X "$folder_name" "${folder_name}"*/; shift
case $2 in
   "$1/" ) echo "The folder <<${folder_name}>> exists." ;;
   * ) echo "The folder <<${folder_name}>> does not exist." ;;
esac

관련 정보