Залип в очередном скрипте над разными проверками на digit-only / digit-in-range
Написать-то чтоб работало я могу по-разному.
Вобщем вопрос только как по баш-хакерски наиболее компактно написать последнюю конструкцию, а-ля ^[[:digit:]]*$
V="$1"
echo "-------------------------------"
# Работает, но может выдавать ложные позитивные, при конструкции вроде {{1..3},{100..120}}, где 10 не входит, но будет найдено в 110
# Можно как массив дотошнить, но слишком уныло.
[[ `echo {1..999}` = *"$V"* ]] && echo "$V > in range" || echo "$V > out of range"
# Проверка на [0-9]* работает корректно. Но громоздкая конструкция.
if `grep -Eqo "^[[:digit:]]*$"<<<$V` ; then
echo 'true'
else
echo 'false'
fi
# Почти компактный, наркоманский, вариант проверки.
grep -Eqo "^[[:digit:]]*$"<<<$V ; [[ "$?" = 0 ]] && echo 'digit' || echo 'not digit'
# А хочу конструкции вроде этой ^[[:digit:]]*$ , по аналогии с grep, но чисто на bash, проверять [0-9]*
[[ $V = <bash_magic_regex> ]] && echo "$V > YES!" || echo "$V > NO!"
# [[ $V = [[:digit:]]{1,3} ]] # Или вот такой...