[Tech] Bash ed espressioni booleane

Alessandro Zarrilli drsound@edisons.it
Gio 31 Ago 2000 03:30:03 CEST


Devo controllare i parametri di input di uno script, ma mi sto un po'
"annodando" con la grammatica booleana di Bash, soprattutto per il fatto
che gli operatori AND ed OR hanno pari precedenza. Quello che vorrei
ottenere è questo (scritto in notazione "canonica"):

if [$#=3] and ([$1='-txt'] or [$1='-html']) and [-f $2] and [$2!=$3]
    then "fai qualcosa"

Io avevo provato con questo:

if [ $1 = '-txt' ] || [ $1 = '-html' ] && [ $# = 3 ] && [ -f $2 ] && [
$2 != $3 ]
    then "fai qualcosa"

...purtroppo non funziona in quanto se non immettiamo alcun parametro i
test [ $1 = '-txt' ] e [ $1 = '-html' ] generano un messaggio di errore
su standard-error. Il test [ $# = 3 ] va dunque eseguito all'inizio.
Come la risolvereste voi? Grazie.

PS: so bene che è possibile risolvere il problema nidificando una serie
di if...then, mi sto solo chiedendo se è possibile farne a meno.







Maggiori informazioni sulla lista flug-tech