bash for loop退出if语句

时间:2013-11-27 19:17:06

标签: bash loops if-statement for-loop

这有效:

for foo in `find . -name "*_aod"`
do
    bar=${foo}.gz
    if [ ! -e $bar ]
    then
        echo $bar
    else
        continue
    fi
done

找到第一个匹配的文件并停止:

for foo in `find . -name "*_aod"`
do
    bar=${foo}.gz
    if [ -e $bar ]
    then
        echo $bar
    else
        continue
    fi
done

我希望有人解释为什么第二个代码会停止,以及我如何编写一个将继续循环的单行代码。

1 个答案:

答案 0 :(得分:0)

你真的应该引用它扩展的$bar。否则,这样的事情可能会发生:

foo='a -a '; bar=${foo}.gz
touch "$bar"
[ -e $bar ] || echo "Whoa, '$bar' not there..."
ls

输出:

Whoa, 'a -a .gz' not there...
a -a .gz

(此示例假定当前工作目录为空。)