检查密码是否是 / 在 bash

Tal*_*Kit 2 bash

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

我想要实现的是这样的:

while test -d REQUIRED_DIR || [[ "$PWD" != "/" ]];do cd ..; done
Run Code Online (Sandbox Code Playgroud)

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

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

while if [ "$PWD"=="/" ];then echo $PWD;false;else true;fi
do
        cd ..
        #echo `pwd`
done
Run Code Online (Sandbox Code Playgroud)

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

更新:- 当我像这样留下空格 b/w 的“==”符号时,“if”按预期工作 [ "$PWD" == "/" ]。

pax*_*blo 6

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

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

while [[ "$PWD" != "/" ]] ; do
    cd ..
done
Run Code Online (Sandbox Code Playgroud)

或者你可以尝试更简单的:

cd /
Run Code Online (Sandbox Code Playgroud)

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

while [[ "$PWD" != "/" ]] ; do
    if [[ -d "$REQUIRED_DIR" ]] ; then
        break
    fi
    cd ..
done
Run Code Online (Sandbox Code Playgroud)

  • @Talespin_Kit,您可能在原始问题中提到过:-) 查看更新以解决该问题。 (2认同)