Originariamente inviato da Manugal
Ciao a tutti!!

Ho un problema con uno script che sto implementando che fa alcune operazioni matematiche. Come ultima condizione del case ho messo la seguente istruzione:

*[!/\*+-%mcdmedia]*) echo "Errore"
Cioè se l'argomento passato è diverso da / * + - % mcd o media allora stampa "Errore". Il problema è che quando lo vado a lanciare e faccio per esempio 5 * 3 mi da errore. Cosa ho sbagliato in questa RE? Forse ho le idee un po' confuse
Occhio che la stringa di corrispondenza indicata nel case non supporta le espressioni regolari!!! Supporta al massimo * e ? e la 'or' |. Praticamente come per il match dei file nella shell. Inoltre (ed è questo che ti servirebbe), il case *) è il default se non viene scelto un altro case.

Quindi:
codice:
case $arg in
    ....

    mcd)
        ....
        ;;
    media)
        ....
        ;;
    *)
        echo "Errore";
        ;;
esac