2016-11-06 5 views
1

は、それがテキストで二つのディレクトリに参加するのは簡単です: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

は、私は解決策を提案(1つのライナーを!):

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

相対パスで始まる場合、このチェック/とも絶対パス

+0

Iのいくつかの種類である〜(ホーム)何とかこの返事を逃した、ゆっくりと受け入れて申し訳ありません。私はそれはうまくいくと思うが、それはかなりのオンライナーだ。 ;> – DonGar

関連する問題