Как протестировать сразу несколько возвращаемых значений логической функции bash в одном условном?

#bash #boolean #return-value

#bash #логическое #возвращаемое значение

Вопрос:

Названия «должно» достаточно.

Я сам опубликую решение в интересах других, поскольку в то время я не мог найти простое, универсальное.

Комментарии:

1. «Более конкретно», потому что речь идет о C , а не о Bash.

2. @StefanvandenAkker — спасибо, что заметили это! Я удалю ссылку. Опубликовано в спешке.

Ответ №1:

 if func1 "$arg1" amp;amp; func2 "$arg2"; then
    echo 'both succeeded'
fi

if func1 "$arg1" || func2 "$arg2"; then
    echo 'at least one succeeded'
fi

if ! func1 "$arg1" amp;amp; ! func2 "$arg2"; then
    echo 'both failed'
fi

if ! func1 "$arg1" || ! func2 "$arg2"; then
    echo 'at least one failed'
fi
  

Ключевыми моментами являются:

  • Bash считает возвращаемое значение функции 0 средним true и 1 или другое целое значение средним false
  • Необходимо использовать логические операторы boolean amp;amp; и ||
  • Также позаботьтесь о том, чтобы оставить пробел между ! и функцией при тестировании на сбой

Комментарии:

1. итак, вы нашли ответ на свой вопрос, аргументы следует заключать в кавычки, чтобы избежать разделения, и вторая функция может не вызываться (после amp;amp; того, как первое условие равно false или || когда первое условие истинно).

2. Хороший момент, спасибо @NahuelFouilleul — добавлены кавычки.