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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容