Howdy!

Matija Grabnar wrote:
On Sat, Mar 04, 2006 at 12:19:44AM +0100, Toma? Toplak wrote:
Za faks re??ujem enostavne naloge, ki jih je potrebno re??iti z bash
skripto. Zanima me, ce obstaja resitev racunanja fakultete, kjer
upoorabimo rekurzivni program, toraj da skripta kli??e sama sebe?
??e lahko podam dva argumenta ./fakulteta.sh 5 1, potem je re??itev
enostavna, ne vem pa, kako bi to naredil samo z enim argumentom ./fakulteta.sh 5.
[snip]

Ne mislis dovolj rekurzivno. V resnici stevca sploh ne potrebujes:
#!/bin/bash
if [ $1 -eq 0 ]
then
  echo 1
  exit 0
fi
less=`expr $1 - 1`
sub=`./fak.sh $less`
facul=`expr $1 \* $sub`
echo $facul

Zgornji primer ni bashevski, deluje v vseh Bourne shellih, verjetno pa tudi v K shellih.

Lahko pa vse skupaj prepišemo v čisti bashizem - uporabimo notranjo bashovo aritmetiko, ki poleg vsega pospeši delovanje ker ni potrebno zaganjanje zunanjega programa (expr):

Torej takole:

#!/bin/bash
if [ $1 -eq 0 ]; then
   echo 1
   exit 0
fi
less=$(( $1 - 1 ))
sub=$( $0 $less )
facul=$(( $1 * $sub ))
echo $facul
exit 0


--
Peace!
 Mkx

---- perl -e 'print $i=pack(c5,(41*2),sqrt(7056),(unpack(c,H)-2),oct(115),10);'
---- echo 16i[q]sa[ln0=aln100%Pln100/snlbx]sbA0D4D465452snlb xq | dc

_______________________________________________
lugos-list mailing list
[email protected]
http://liste2.lugos.si/cgi-bin/mailman/listinfo/lugos-list

Одговори путем е-поште