在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
}
答案 0 :(得分:1)
我提出解决方案(一个班轮!):
[[ "${REL:0:1}" == / || "${REL:0:2}" == ~[/a-z] ]] && echo "$REL" || echo "${BASE}/${REL}"
检查相对路径是否以/开头,并且〜(home)是某种绝对路径