У Python есть удобная функция языка, называемая "for-else" (аналогично "while-else" ), которая выглядит так:
for obj in my_list:
if obj == target:
break
else: # note: this else is attached to the for, not the if
print "nothing matched", target, "in the list"
По существу, else
пропускается, если цикл прерывается, но выполняется, если цикл вышел из-за отказа условия (для while
) или конца итерации (для for
).
Есть ли способ сделать это в bash
? Ближайшим, о котором я могу думать, является использование переменной флага:
flag=false
for i in x y z; do
if [ condition $i ]; then
flag=true
break
fi
done
if ! $flag; then
echo "nothing in the list fulfilled the condition"
fi
который является более подробным.