URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 9232
[ Назад ]

Исходное сообщение
"Диапазоны в if(bash)"

Отправлено anonymous , 31-Авг-11 00:37 
Доброго времени суток! Никак не могу найти, как же указывать диапазоны в sh/bash(желательно - в sh, без башизмов). В частности, четные/нечетные диапазоны, либо проверка числа на четность/нечетность вообще. Пробовал типа
if [ $i -eq {0..30..2} ]; then
....
fi
Толку чуть. Есть адекватное решение?

Содержание

Сообщения в этом обсуждении
"Диапазоны в if(bash)"
Отправлено Аноним , 31-Авг-11 07:05 
Доброго времени!
Мы знаем, что чётное число делится нацело на два.
В 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


"Диапазоны в if(bash)"
Отправлено anonymous , 31-Авг-11 07:54 
>[оверквотинг удален]
> 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

Спасибо большое. Чувствую себя идиотом)


"Диапазоны в if(bash)"
Отправлено Andrey Mitrofanov , 21-Сен-11 09:11 
:) Не каждый анонимоус долетит до середины man bash.

"Диапазоны в if(bash)"
Отправлено jd , 21-Сен-11 10:32 
%

"Диапазоны в if(bash)"
Отправлено омоним , 21-Сен-11 08:33 
> Доброго времени суток! Никак не могу найти, как же указывать диапазоны в
> sh/bash(желательно - в sh, без башизмов). В частности, четные/нечетные диапазоны, либо
> проверка числа на четность/нечетность вообще. Пробовал типа
> if [ $i -eq {0..30..2} ]; then
> ....
> fi
> Толку чуть. Есть адекватное решение?

man seq