[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: conversione a dash e RE



Ciao Piviul,

Il giorno ven, 16/12/2011 alle 10.46 +0100, Paolo Sala ha scritto:
> Ciao a tutti, ho visto che lenny di default installa dash invece di
> bash. Qualcuno mi ha suggerito di migrare gli script bash in dash perché
> è più veloce e soprattutto è standard e quindi portabile e
> multipiattaforma. Benissimo, mi sono allora armato di pazienza e mi sono
> messo a convertire i miei script e mi sono arenato con i test con le
> espressioni regolari (per intenderci i test avanzati con [[ ]] e =~
> qualcosa tipo [[ $vartest =~ ^-?[0-0]+$ ]] per vedere se in vartest è un
> intero). Qualcuno ha qualche suggerimento a parte usare grep/egrep?

Io prenderei il consiglio con le pinze: la scelta di usare dash anziché
bash è fortemente consigliata per tutti quelli che sono gli script,
soprattutto quelli presenti nel sistema base, perché dash fa meno cose
di bash e richiede meno librerie. bash rimane su tutti i sistemi Debian
ed comunque consigliata come shell predefinita per l'interazione con
l'utente. Che poi sia più lenta o più veloce dipende dagli specifici
script, ad esempio, nel tuo caso, immagino sia più veloce una bash che
conosce le RE piuttosto che un giro complicato per ottenere lo stesso
risultato usando più comandi. Fai delle prove di velocità tu stesso e
poi scegli quale usare.

Per verificare se hai un intero puoi forse arrangiarti con «tr», ma non
mi viene un metodo semplice per verificare che il segno meno possa
essere solo in prima posizione.

n=8250987
m=$(echo $n | tr -d '[0-9]')
if [ -z "$m" -o "$m" = "-" ]
then ...
fi

oppure con expr:

n=8250987
expr "$n" + 0 >/dev/null 2>&1
if [ $? -ne 2 ]
then ...
fi

Ciao,
G.


Reply to: