Shell Scripting - 测试目录是存在于当前目录中还是存在于父/祖先目录中

时间:2012-02-24 01:59:01

标签: bash shell mercurial zsh

我使用以下代码来检测当前目录中是否存在文件夹.hg。如果没有,则函数返回:

if [ ! -d ".hg" ]; then
  return
fi

如何修改此项以检查父/祖先目录中的当前目录中是否存在.hg?我想如果它不是-d这样的选项,那么解决方案将是递归的。

3 个答案:

答案 0 :(得分:2)

我只是骗过这个:

if ! hg status > /dev/null 2>&1; then
    return
fi
只要你在mercurial树里的某个地方,

hg status应该会成功。

答案 1 :(得分:1)

这将在前面的目录中搜索d

指定的目录
    d=.hg
     r=1
        for i in $(seq 0 $(pwd|tr -cd '/'|wc -c)); do
            if [ -d "$d" ]; then
                r=0
            fi
            d=../$d
        done
        if [ r==1 ]; then
           return

答案 2 :(得分:0)

另一种方法是将测试包装在一个while循环中,该循环一直持续到当前工作目录为/,并且在检查.hg目录是否存在之后为cd ..