재귀적으로 디렉토리를 찾는 bash 함수

재귀적으로 디렉토리를 찾는 bash 함수

특정 상위 디렉토리를 찾는 bash 함수를 작성하는 방법. 이것은 내 설정입니다.

/home/user/dev/project1/branch1/deeply/nested/module/structure

개발자용 애플리케이션 서버는 다음 위치에 있습니다.

/home/user/dev/project1/branch1/apps/someappserver

컴파일된 모듈을 애플리케이션 서버에 빠르게 복사하고, 애플리케이션 서버를 실행/중지하고, 특정 Maven 목표를 호출하는 등의 작업을 수행하기 위해 브랜치의 루트까지 재귀적으로 이동하는 bash 함수를 원합니다.

어떤 아이디어가 있나요? 각 브랜치에는 버전에 대한 정확한 정보가 포함된 maven pom.xml이 있습니다.

답변1

어때요?

find_branch_root () {
    cwd=$PWD
    while [ ! -e "$cwd/pom.xml" ] && [ "x$cwd" != x/ ]; do
         cwd=`dirname "$cwd"`
    done
    echo "$cwd"
}

루트(/)에 도달하거나 "pom.xml"을 찾을 때까지 경로에서 디렉터리를 제거합니다.

답변2

와 비슷한 이름 PRJDIR과 비슷한 값을 사용하여 내보낸 환경 변수를 만듭니다 /home/user/dev/project1. 이 환경 변수는 다음과 같이 다른 스크립트에서 쉽게 참조할 수 있습니다.

stop-app
cp ${PRJDIR}/modules/* modules/*
start-app

답변3

아마도 적절한 파일이나 디렉토리가 발견되지 않을 때까지 while루프를 돌다 가 올바른 위치에 놓이는 새로운 디렉토리 구조로 들어가게 될까요? 작동하지 않나요?cd ..cd

관련 정보