On Fri, Oct 09, 2009 at 10:34:32PM +0200, Ionel Mugurel Ciobica wrote:
> On  9-10-2009, at 19h 22'27", rzeno wrote about "Re: [rlug] complex if 
> conditions in bash"
> > asa cum ai scris expresia nu are importanta ce valori au 'cond 1' si 'cond 
> > 4'
> > din punct de vedere logic e echivalent cu:
> 
> Ba da este important sa ramina si conditiile 1 si 4.
> 
> 
> Se testeaza doua variabile, $i si $imag. $i poate avea trei valori si
> $imag doua valori:
> 
> 
> variabile     i               imag            actiune
>               imaginar        f               nu
>               regular         f               da
>               all             f               da
>               imaginar        f/i=            da
>               regular         f/i=            nu
>               all             f/i=            da
>                         
>
scuze pentru intirziere, :)

# c1  "$i" == "imaginar"
# c2  "$i" == "regular"
# c3  "$i" == "all"
# c4  "$imag" == "f"
# c5  "$imag" == "f/i="

for i in imaginar regular all ; do
         for imag in f f/i= ; do
                  # cirnat, direct din mail
        # (c2 and c4) or (c3 and c4) or (c1 and c5) or (c3 && c5)
                  resdorit=`( [ "$i" == "regular" -a "$imag" == "f" ] || \
                    [ "$i" == "all" -a "$imag" == "f" ] || \
                    [ "$i" == "imaginar" -a "$imag" == "f/i=" ] || \
                    [ "$i" == "all" -a "$imag" == "f/i=" ] && echo "da" ) || 
echo "nu"`;
                  # asta nu aduce nimic nou, rearanjare
        # ((c2 or c3) and c4) or ((c1 or c3) and c5)
                  ressimpl1=`( ( [ "$i" == "regular" -o "$i" == "all" ] && [ 
"$imag" == "f" ] ) || \
                     ( [ "$i" == "imaginar" -o "$i" == "all" ] && [ "$imag" == 
"f/i=" ] ) && echo "da" ) || echo "nu"`;
                  # mai simplu dar trebuie sa fi sigur ca $i nu ia alte valori 
in afara de imaginar, regular si all
        # (not c1 and c4) or (not c2 and c5)
                  ressimpl2=`( ( [ "$i" != "imaginar" ] && [ "$imag" == "f" ] ) 
|| \
                    ( [ "$i" != "regular" ] && [ "$imag" == "f/i=" ] ) && echo 
"da" ) || echo "nu"`;
        # pretty printing, :)
                  printf "%8s\t%4s\t%2s\t%2s\t%s\n" $i $imag $resdorit 
$ressimpl1 $ressimpl2;
         done
done

cred ca o varianta bazata pe case, vezi replayul de la zgrim, sau cu nested if, 
ar fi mai eleganta/lizibila in final, :)


_______________________________________________
RLUG mailing list
[email protected]
http://lists.lug.ro/mailman/listinfo/rlug

Raspunde prin e-mail lui