bash路径检测

作者: fromradio | 来源:发表于2016-07-26 11:14 被阅读94次

编写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

相关文章

网友评论

    本文标题:bash路径检测

    本文链接:https://www.haomeiwen.com/subject/pyynjttx.html