Linux学习|Gentoo/Arch/FreeBSD首页投稿(暂停使用,暂停投稿)程序员

bash路径检测

2016-07-26  本文已影响94人  fromradio

编写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
上一篇 下一篇

猜你喜欢

热点阅读