bash路径检测

编写bash脚本的时候经常遇到检查某个路径是否存在的时候,此时我们会使用-dif语句来达成目标。例如,当路径存在的时候我们想做一些操作,有

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

或者当不存在的时候做一些操作

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

然而,如果该路径是链接的话会出现问题,比如

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

会产生错误

rmdir: failed to remove `symlink': Not a directory 
#错误, 'symlink'不是一个路径

所以,最完整的做法是加入是否为链接的判断,如下

if [ -d "$LINK_OR_DIR" ]; then
    if [ -L "$LINK_OR_DIR" ]; then
        # 是一个链接
        rm "$LINK_OR_DIR"
    else
        # 是一个路径
        rmdir "$LINK_OR_DIR"
    fi
fi
    原文作者:fromradio
    原文地址: https://www.jianshu.com/p/9e17f64d609d
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞