在Bash中:如何扩展(可能)相对路径与指定基数?

时间:2016-11-06 19:08:29

标签: 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中获得相同的行为?特别是如果目录可能存在或可能不存在?

到目前为止我的最佳答案,但我希望有一个oneliner。

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

    if [[ "${rel}" == /* ]] ; then
        echo "${rel}"
    else
        echo "${base%/}/${rel}"
    fi
}

1 个答案:

答案 0 :(得分:1)

我提出解决方案(一个班轮!):

[[ "${REL:0:1}" == / || "${REL:0:2}" == ~[/a-z] ]] && echo "$REL" || echo "${BASE}/${REL}"

检查相对路径是否以/开头,并且〜(home)是某种绝对路径