freebsd
Генерация случайного числа в sh
Для Linux проблема получения случайного числа в скрипте решается переменной $RANDOM, которая специфична для bash и ряда других оболочек. Для FreeBSD с sh все несколько сложнее. Есть несколько решений, например в awk есть функция rand(). Но работа с awk мне не понравилась, так что пойдем другим путем. Получилось так, что мне нужно было получить число из промежутка от 1 до 3. Эту задачу и будем решать:
get_random_number()
{
local upper=3
local lower=1
local random=`/usr/bin/head -n 1 /dev/random | cksum | cut -f1 -d" " | sed 's/^.*\([0-9]\).*/\1/'`
if [ $random -le $upper ] && [ $random -ge $lower ]; then
echo $random
return 0
else
get_random_number
fi
}
/dev/random генерирует для нас произвольные байты, далее подсчитывается их cksum, из него берем одну цифру. Если попадает в нужный диапазон – выходим, если нет запускаем функцию еще раз.
Метки
allied telesis
asterisk
ccna
centos
cisco
daylight saving
dba
debug
disk
env
environment
epoch
freebsd
hardware
ipset
iptables
linux
mysql
nagios
network
nrpe
perl
pnp4nagios
portages gentoo portageq
process
programming
sata
scripting
security
sh
shell
ssh
subversion
svn
switch
timezone
tips
unix
voip
vpn
yum
Книги