**Нарушено правило:** StrongBash
**Задача:** Обойти все зоны, выдаваемые другой командой.
cloudfox dns info "$DNS_NAME" --zones | while read -r DNS_ZONE; do
....
done
**Ошибка:** Если при выполнении "cloudfox dns info" будет ошибка - она будет "заглушена", т.к. она в пайпе и не стоит set -o pipefail.
**Как надо делать:** StrongBash предлагает такие варианты:
Вы можете:
1. Или использовать промежуточную переменную ret=$( $cmd )
2. Или использовать строкой выше set -o pipefail cmd set +o pipefail (кроме использования в if $cmd | cmd2)
4. Или если Вы считаете код достаточно надежным для конкретного случая, добавьте || true в конце
5. Или комментарий строкой выше # skip strongbash034
Я сделал так:
cloudfox dns info "$DNS_NAME" --zones >/tmp/cf_script.tmp.$$
while read -r DNS_ZONE; do
....
done < /tmp/cf_script.tmp.$$
rm -f /tmp/cf_script.tmp.$$
~~OWNERAPPROVE~~
/*Не удаляйте эту строку и ниже!*/
{(rater>id=1|name=Прочитал_правила_разработки:как_не_надо_делать:2019-09-23_обработка_результата_пайпом|type=vote|trace=user|tracedetails=1)}