bash路徑檢測(cè)

編寫bash腳本的時(shí)候經(jīng)常遇到檢查某個(gè)路徑是否存在的時(shí)候,此時(shí)我們會(huì)使用-dif語(yǔ)句來(lái)達(dá)成目標(biāo)。例如,當(dāng)路徑存在的時(shí)候我們想做一些操作,有

if [ -d "$DIRECTORY" ]; then
    # operations here
fi

或者當(dāng)不存在的時(shí)候做一些操作

if [ ! -d "$DIRECTORY"]; then
    # operations here
fi

然而,如果該路徑是鏈接的話會(huì)出現(xiàn)問(wèn)題,比如

ln -s "$ACTUAL_DIR" "$SYMLINK"
if [ -d "$SYMLINK" ]; then
    rmdir "$SYMLINK"
fi

會(huì)產(chǎn)生錯(cuò)誤

rmdir: failed to remove `symlink': Not a directory 
#錯(cuò)誤, 'symlink'不是一個(gè)路徑

所以,最完整的做法是加入是否為鏈接的判斷,如下

if [ -d "$LINK_OR_DIR" ]; then
    if [ -L "$LINK_OR_DIR" ]; then
        # 是一個(gè)鏈接
        rm "$LINK_OR_DIR"
    else
        # 是一個(gè)路徑
        rmdir "$LINK_OR_DIR"
    fi
fi
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容