这有效:
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
我希望有人解释为什么第二个代码会停止,以及我如何编写一个将继续循环的单行代码。
答案 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
(此示例假定当前工作目录为空。)