A konkret problemara a lenti egy megoldas bash-ben, de mindenkepp javaslom tanulmanyozasra az Advanced Bash Scripting Guide-ot, illetve az adott shell man oldalat
#! /bin/bash
# a regexet azert erdemes valtozoban tarolni, mert igy nem kell szivni azzal,
# hogy nemely bash verzio idezojelekkel varja a regexet, a tobbi meg anelkul
# megjegyzes: ez esetleg meglepo inputokat is elfogadhat: 0000, 00012 stb.
regex='^[0-9][0-9]*$'
# amig nem jo az input, olvass ujra
while true
do
# az 'echo -n'-nel hordozhatobb a printf
printf 'input: '
# ez egy sort olvas az 'ora' valtozoba
read ora
# ha minden jo, hagyd abba
if [[ $ora =~ $regex && $ora -ge 0 && $ora -le 23 ]]
then
break
else
printf 'invalid input, try again\n'
fi
done
printf "ora=$ora\n"