개발 서버에서 호스팅되는 SVN에 대한 커밋 후 후크를 작성하려고합니다. 내 목표는 커밋 된 프로젝트의 사본을 서버에서 호스팅되는 디렉토리로 자동 체크 아웃하는 것입니다. 그러나 프로젝트가 호스팅되는 동일한 하위 디렉토리로 체크 아웃하려면 스크립트에 전달 된 디렉토리 문자열의 마지막 디렉토리 만 읽을 수 있어야합니다.
예를 들어 프로젝트 “example”에 대해 SVN 커밋을 수행하면 내 스크립트는 “/ usr / local / svn / repos / example”을 첫 번째 인수로 가져옵니다. 문자열의 끝에서 “example”을 가져온 다음 다른 문자열과 연결하여 “/ server / root / example”에 체크 아웃하고 변경 사항이 즉시 적용되도록해야합니다.
답변
basename
경로의 디렉토리 접두사를 제거합니다.
$ basename /usr/local/svn/repos/example
example
$ echo "/server/root/$(basename /usr/local/svn/repos/example)"
/server/root/example
답변
다음 접근 방식을 사용하여 경로 이름의 경로를 얻을 수 있습니다.
some_path=a/b/c
echo $(basename $some_path)
echo $(basename $(dirname $some_path))
echo $(basename $(dirname $(dirname $some_path)))
산출:
c
b
a
답변
Bash는 external을 호출하지 않고도 경로의 마지막 부분을 가져올 수 있습니다 basename
.
subdir="/path/to/whatever/${1##*/}"