2

我正在尝试编写一个 bash 脚本,它将“cd ..”直到找到包含另一个特定目录的目录,或者到达“/”目录。

我想要实现的是:

while test -d REQUIRED_DIR || [[ "$PWD" != "/" ]];do cd ..; done

REQUIRED_DIR目标是在到达根目录时找到或停止导航。

下面是不起作用的 bash 代码。

while if [ "$PWD"=="/" ];then echo $PWD;false;else true;fi
do
        cd ..
        #echo `pwd`
done

即使不在根目录中,if 条件也总是通过。

更新:- 当我离开空格时,“如果”按预期工作,像这样的“==”符号 [ "$PWD" == "/" ]

4

1 回答 1

6

while if对我来说是一个新的,我不完全确定你想通过组合它们来实现什么。

我想你可能想while自己尝试一下:

while [[ "$PWD" != "/" ]] ; do
    cd ..
done

或者您可以尝试更简单的方法:

cd /

如果如您的评论中所述,您需要零碎地进行操作,以便最终进入包含 a 的第一个目录,$REQUIRED_DIR或者/如果找不到,您可以简单地执行以下操作:

while [[ "$PWD" != "/" ]] ; do
    if [[ -d "$REQUIRED_DIR" ]] ; then
        break
    fi
    cd ..
done
于 2012-08-24T11:28:54.937 回答