Strona główna Ubuntu C++ Hardware HTML i javascript Java Software SQL

Awk|Bash - generowanie losowej liczby z przedziału.

Dodano: 2012-03-09

Język skryptowy bash jest potężnym narzędziem, w połączeniu z awk-iem daje ogromne możliwości administratorom jak i skrypciarzą.

Dzięki możliwości tworzenia skryptów można stworzyć ciekawe rozwiązania na potrzeby chwili lub na dłuższą metę (a może to być maraton ;)

Może się zdarzyć, że będzie potrzebny skrypt który generuje losową liczbę z podanego zakresu przez użytkownika. Skrypt stworzony przeze mnie w przypadku nie wystąpienia oczekiwanych parametrów wyświetla krótką informację o sposobie działania. Błędne parametry wymuszają zakończenie skryptu i zwrócenie kodu błędu. Kod ten można sprawdzić za pomocą $?, wartość 10 to brak parametru, 12 podany parametr nie jest liczbą.

Poniżej przykład skryptu:

Pojedyncze kliknięcie zaznaczenie, podwójne wydrukowanie kodu.

#!/bin/bash

function help_(){
         echo "The script generates a random number in the range specified by the inverval number. "
         echo "The script have two parameters: 1 - start interval number, 2 - end interval number."
}


if [ "$1" = "" ]; then
	echo `help_`;
	exit 10
elif [ "$2" = "" ]; then
	echo `help_`;
	exit 10
fi

function isNumber(){
	echo $1 | grep '^[0-9]*$' > NULL
	if [ "$?" -eq "0" ]; then
		echo "1"
	else 
		echo "0"
	fi
}

if [ "`isNumber $1`" = "0" ]; then
	exit 12
fi

if [ "`isNumber $2`" = "0" ]; then
	exit 12
fi


awk -vs=$1 -ve=$2 'BEGIN {
   srand()
   print int(s + rand() * (e-s+1))
}'