Используйте пользовательскую тестовую функцию в условном операторе bash

Используйте пользовательскую тестовую функцию в условном операторе bash

У меня есть функция bash, numericкоторая возвращает либо , 1либо 0.

numeric ()
{
  # compute k either 1 or 0
  echo "$k"
}

Как можно использовать эту функцию в условном выражении для проверки, varявляется ли переменная числовой?

решение1

Помните, что в контексте условных выражений оболочки возвращаемое значение 0означает «успех» или «истина», а ненулевое значение означает «неудача» или «ложь», поэтому я бы рекомендовал адаптировать функцию так, чтобы она возвращала значение, 0если аргумент является числовым значением.

Если предположить, что «условный оператор» является ifконструкцией, то следующее будет работать:

if numeric "$var"
then
   # Code if $var is numeric
else
   echo "$var is not numeric"
fi

решение2

использовать возврат

numeric ()
{
  # compute k either 1 or 0 || return 1
  echo "$k"
  return 0
}

numeric || exit 1

Связанный контент