경로를 뒤로 걷고 경로를 변수에 저장하는 방법 [중복]

경로를 뒤로 걷고 경로를 변수에 저장하는 방법 [중복]

변수에 경로를 저장했다고 가정합니다.

tmp=/home/abc/xyz

그래서 내가 지금 원하는 것은 한 걸음 물러서서 그것을 변수에 저장하는 것입니다.

tmp2=/home/abc

오류 없이 이를 달성하는 방법을 알려주세요.

답변1

직업인 것 같군요 dirname. 파일/디렉토리가 존재할 필요는 없으며 오류가 발생하지 않도록 마지막 부분만 잘라냅니다. /돌아왔 으니까요 /.

tmp2="$(dirname -- "$tmp")"

답변2

대리자 dirname. 이를 위해서는 경로가 비어 있지 않고 상대 경로가 아니어야 합니다.

tmp2=$(set -f; IFS=/; set -- $tmp; echo "/${*:1:$# ? $# - 1: 0}")

어쨌든, 나는 서브쉘을 사용하는 것을 좋아하지 않습니다. 따라서 dirname결과를 전역 변수에 할당하는 함수 버전이 __더 좋지만 더 장황해집니다.

관련 정보