변수에 경로를 저장했다고 가정합니다.
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
결과를 전역 변수에 할당하는 함수 버전이 __
더 좋지만 더 장황해집니다.