我有一个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"
创建。
答案 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