在Bash中:如何相对于指定的基展开(可能)相对路径?

在Bash中:如何相对于指定的基展开(可能)相对路径?,bash,Bash,在Python中,很容易以文本方式连接两个目录,同时考虑绝对路径: os.path.join('/base', 'rel_subdir') '/base/rel_subdir' os.path.join('/base/', 'subdir') '/base/subdir' os.path.join('/base', '/absolute') '/absolute' 如何在bash中获得相同的行为?特别是如果目录可能真的存在,也可能不存在 到目前为止,我的答案是最好的,但我希望能有一

在Python中,很容易以文本方式连接两个目录,同时考虑绝对路径:

os.path.join('/base', 'rel_subdir')
  '/base/rel_subdir'
os.path.join('/base/', 'subdir')
  '/base/subdir'
os.path.join('/base', '/absolute')
  '/absolute'
如何在bash中获得相同的行为?特别是如果目录可能真的存在,也可能不存在

到目前为止,我的答案是最好的,但我希望能有一个唯一的答案

function _joinrel {
    local base="$1"
    local rel="$2"

    if [[ "${rel}" == /* ]] ; then
        echo "${rel}"
    else
        echo "${base%/}/${rel}"
    fi
}
我提出解决方案(一行!):


检查相对路径是否以/开头,也以~(home)开头,这是某种绝对路径

我不知怎么错过了这个回复,很抱歉接受得太慢。我想那会管用的,但这是唯一的办法
[[ "${REL:0:1}" == / || "${REL:0:2}" == ~[/a-z] ]] && echo "$REL" || echo "${BASE}/${REL}"