У меня есть цикл, который выглядит так:
for arg in $args; do
f "$arg"
done
где для некоторых значений arg функция f может не работать. Если я добавлю set -e в начале, то цикл остановится на неудачном шаге и вернет общий отказ.
Я бы хотел, чтобы все экземпляры цикла выполнялись, несмотря ни на что, но если какой-либо из них выйдет из строя, весь цикл вернет ошибку. Лучшее, что я могу придумать, это
failed=0
for arg in $args; do
f "$arg" || ((failed++))
done
((failed == 0))
Это работает, но немного некрасиво. Есть лучший способ это сделать?
@anubhava - ой, спасибо, что поймали это. Фиксированный.
Мне кажется, это нормально.





Это должен быть
((failed == 0))и не такой уж и уродливый