# Si verifica se si e` scelto un campo o un numero di campi: case "$_mkey" in ## !([0-9]) ) # se input=2 ok, se 23 si comporta come una lettera!
$ case 2 in !([0-9]) ) echo OK;; *) echo NO;; esac NO $ case 23 in !([0-9]) ) echo OK;; *) echo NO;; esac OK e' un comportamento coerente il test verifica che l'input non sia un numero compreso tra 0 e 9 2 e' un numero compreso tra 0 e 9, quindi giustamente non passa il test23 invece non e' UN numero compreso tra 0' e 9 (infatti sono due) e quindi passa il test
la controprova potrebbe essere questa $ case 23 in !([0-9][0-9]) ) echo OK;; *) echo NO;; esac NO