Ответ 1
read n
if ! ((n % 4)); then
echo "$n divisible by 4."
fi
Оператор (( ))
оценивает выражения как арифметику C и имеет логическое возвращение.
Следовательно, (( 0 ))
является ложным, а (( 1 ))
является истинным. [1]
Оператор $(( ))
также расширяет C арифметические выражения, но вместо того, чтобы возвращать true/false, он возвращает значение вместо этого. Из-за этого вы можете проверить результат, если $(( ))
следующим образом: [2]
[[ $(( n % 4 )) == 0 ]]
Но это равносильно: if (function() == false)
. Таким образом, более простой и более идиоматический тест:
! (( n % 4 ))
[1]: Современный bash обрабатывает номера до вашего размера intmax_t
.
[2]: Обратите внимание, что вы можете отбросить $
внутри (( ))
, потому что в нем есть переменные разметки.