Команда [
не выполняет оценку общего выражения. Скорее, он оценивает только выражения горстки спецификаций c, идиосинкразии c форм, описанных в его документации . Оператор -eq
входит в число поддерживаемых, а /
- нет, а [
в любом случае сам не обрабатывает подвыражения.
Но любая POSIX-совместимая оболочка может вычислять арифметические c выражения с помощью расширения arithmeti c, которое вы получаете, заключив выражение, которое нужно вычислить, между $((
и ))
. На этом этапе, однако, важно отметить, что это даст вам целое число арифметическое c, а не арифметическое c с плавающей запятой, и в любом случае x / 2 == 0 не является подходящим тестом для определения четности x . Как отметил в своем ответе @JohnKugelman, вам нужен %
, оператор модуля, а не /
.
В целом, тогда:
isDivisibleBy2() {
if [ $(( $number % 2 )) -eq 0 ]; then
echo "$number is divisible by 2 because the remainder of $number/2 is 0"
fi
}