Доброго времени суток! Никак не могу найти, как же указывать диапазоны в sh/bash(желательно - в sh, без башизмов). В частности, четные/нечетные диапазоны, либо проверка числа на четность/нечетность вообще. Пробовал типа
if [ $i -eq {0..30..2} ]; then
....
fi
Толку чуть. Есть адекватное решение?
Доброго времени!
Мы знаем, что чётное число делится нацело на два.
В posix shell арифметические операции производятся следующим образом:
$((num_1 operator num_2))
Пример: echo $((2/1))
В bourne shell арифметические операции производятся следующим образом:
expr num_1 operator num_2
Пример: expr 2 / 1
info coreutils 'expr invocation' man expr
#!/bin/sh
for num in -1 0 1 2 3 4 5; do
if [ $num -eq $((num/2*2)) ];
then echo "$num - чётное число";
else echo "$num - нечётное число";
fi
done
>[оверквотинг удален]
> expr num_1 operator num_2
> Пример: expr 2 / 1
> info coreutils 'expr invocation' man expr
> #!/bin/sh
> for num in -1 0 1 2 3 4 5; do
> if [ $num -eq $((num/2*2)) ];
> then echo "$num - чётное число";
> else echo "$num - нечётное число";
> fi
> doneСпасибо большое. Чувствую себя идиотом)
:) Не каждый анонимоус долетит до середины man bash.
%
> Доброго времени суток! Никак не могу найти, как же указывать диапазоны в
> sh/bash(желательно - в sh, без башизмов). В частности, четные/нечетные диапазоны, либо
> проверка числа на четность/нечетность вообще. Пробовал типа
> if [ $i -eq {0..30..2} ]; then
> ....
> fi
> Толку чуть. Есть адекватное решение?man seq