Попробовать. case
понимает только глобусы, поэтому обработать регулярное выражение непросто. Однако оператор = ~
предлагает некоторые решения.
#!/bin/bash
INP="01/05/1900"
ptn="^([0-9]|[0-9][0-9])/([0-9]|[0-9][0-9])/([0-9][0-9]|[0-9][0-9][0-9][0-9])$"
if [[ $INP =~ $ptn ]] ; then
echo valid pattern
else
echo invalid
fi
Если вы хотите уменьшить размер регулярного выражения, ^ [0-9] {1,2} / [0-9] {1,2} / ([0-9] {2} | [ 0-9] {4}) $
тоже работает.