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