我正在尝试编写一个 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" == "/" ]。
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)