6

我有一个 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在我的屏幕上得到输出。

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

4

2 回答 2

19

除了-fvs-d注意[[ ]]不是 POSIX,while[ ]是。您多次使用的任何字符串或路径都应该在变量中以避免输入错误,尤其是当您使用rm -rfwhich deletes 时带有极大的偏见。最便携的解决方案是

DIR=/tmp/dir.lock
if [ -d "$DIR" ]; then
    printf '%s\n' "Removing Lock ($DIR)"
    rm -rf "$DIR"
fi
于 2012-12-24T12:21:30.823 回答
4

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

if [[ -d /tmp/dir.lock ]]; then
    echo "Removing Lock"
    rm -rf /tmp/dir.lock
fi
于 2012-12-24T12:14:59.947 回答