특정 상위 디렉토리를 찾는 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