[LUGOS] Fakulteta v bash skripti?
Metod Kozelj
metodk at gmail.com
Sat Mar 4 17:17:47 CET 2006
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
More information about the lugos-list
mailing list