В bash можете ли вы использовать вызов функции в качестве условия в инструкции if?

#bash

#bash

Вопрос:

вот чего я пытаюсь достичь:

 function f1() {
  return 0
}

function f2() {
  return 0
}

if [[ f1 amp;amp; f2 ]]; then
  echo "success"
else
  echo "fail"
fi
  

Ответ №1:

Вы не используете [[ (or [ ) при выполнении команды и проверке результирующего кода.

 if f1 amp;amp; f2 ; then
  echo "success"
else
  echo "fail"
fi
  

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

1. Запомнить return 0 означает true , потому что это основано на кодах выхода, а не на булевой логике.

Ответ №2:

ДА. Вы можете сделать это, проверив возврат с помощью echo (хотя и не строгий возврат):

if [[ "$(f1)" == "whatever" ]] работает

Смотрите эту страницу для получения дополнительной информации о возвращаемых функциях. В нем также есть пара хороших комментариев, в которых конкретно говорится о операторах if.

http://www.linuxjournal.com/content/return-values-bash-functions

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

1. Вы не можете использовать $(...) для получения возвращаемых значений.