Ответ 1
$ a=4
$ [ $((a%2)) -eq 0 ] && echo "even"
even
$ a=3
$ [ $((a%2)) -eq 0 ] && echo "even"
Как мне изменить это, чтобы проверить, имеет ли val
четное или нечетное числовое значение?
val=2
if $((RANDOM % $val)); ...
$ a=4
$ [ $((a%2)) -eq 0 ] && echo "even"
even
$ a=3
$ [ $((a%2)) -eq 0 ] && echo "even"
foo=6
if [ $((foo%2)) -eq 0 ];
then
echo "even";
else
echo "odd";
fi
$(( ... ))
является просто выражением. Его результат появляется там, где bash
ожидает команду.
Решение, совместимое с POSIX, будет:
if [ "$(( RANDOM % 2))" -ne 0 ];
но поскольку RANDOM
также не определен в POSIX, вы также можете использовать правильную команду bash
для задания: команда вычисления арифметической оценки:
if (( RANDOM % 2 )); then