仅当目录使用shell脚本时才删除目录

时间:2012-12-24 11:54:47

标签: shell

我有一个shell(ksh)脚本。我想确定/tmp中是否存在某个目录,如果存在,那么我必须将其删除。我的剧本是:

测试

#!/usr/bin/ksh
# what should I write here?
if [[ -f /tmp/dir.lock ]]; then
    echo "Removing Lock"
    rm -rf /tmp/dir.lock
fi

我该怎么办?我没有得到想要的结果:当我执行脚本并且我没有在屏幕上输出Removing Lock时,目录没有被删除。

我手动检查了锁定文件是否存在于该位置。 锁定文件由TCL程序使用set MUTEX_LOCK "/tmp/dir.lock"创建。

2 个答案:

答案 0 :(得分:17)

除了-f-d之外,请注意[[ ]]不是POSIX,而[ ]是。rm -rf。您不止一次使用的任何字符串或路径都应该在变量中,以避免输入错误,尤其是当您使用DIR=/tmp/dir.lock if [ -d "$DIR" ]; then printf '%s\n' "Removing Lock ($DIR)" rm -rf "$DIR" fi 时会出现极端偏见的情况。最便携的解决方案是

{{1}}

答案 1 :(得分:4)

对于目录检查,您应该使用-d

if [[ -d /tmp/dir.lock ]]; then
    echo "Removing Lock"
    rm -rf /tmp/dir.lock
fi