我正在尝试编写一个“cd ..”的bash脚本,直到找到包含另一个特定目录的目录,或者到达“/”目录。
我想要达到的目标是:
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条件也会一直通过。
更新: - 当我离开空间时,“if”按预期工作b / w这样的“==”符号
[ "$PWD" == "/" ]
。
答案 0 :(得分:4)
while if
对我来说是一个新的,我不完全确定你想要通过组合它们来实现的目标。
我想你可能只想尝试while
:
while [[ "$PWD" != "/" ]] ; do
cd ..
done
或者你可以尝试更简单的方法:
cd /
如您的评论中所示,如果您需要以零碎的方式执行此操作,那么您最终会在包含$REQUIRED_DIR
或/
的第一个目录中结束找不到一个,你可以简单地做一些事情:
while [[ "$PWD" != "/" ]] ; do
if [[ -d "$REQUIRED_DIR" ]] ; then
break
fi
cd ..
done