Нарушено правило: 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~~
Прочитал правила разработки как не надо делать 2019-09-23 обработка результата пайпом |