我正在尝试写一个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条件也始终会传递。
更新:-当我离开空格b/w时,"if“按预期工作,"==”符号类似于[ "$PWD" == "/" ]。
发布于 2012-08-24 11:28:54
while if是对我来说是一个新的,我不完全确定你试图通过合并它们来达到什么目的。
我想你可能想自己尝试一下while:
while [[ "$PWD" != "/" ]] ; do
cd ..
done或者你可以试试简单得多的方法:
cd /如果正如您的注释中所指出的那样,您需要零敲碎打地执行此操作,以便在没有找到$REQUIRED_DIR或/的第一个目录中结束,则只需执行以下操作:
while [[ "$PWD" != "/" ]] ; do
if [[ -d "$REQUIRED_DIR" ]] ; then
break
fi
cd ..
donehttps://stackoverflow.com/questions/12108509
复制相似问题