Hi Ionel!
On Mon, 25 Feb 2002, Ionel Mugurel Ciobica wrote:

> Am sapat toata ziua dupa manuale de shell programing. man sh si man csh nu
> m-ua ajutat. Am cumparat 'Unix Shell Programming Tools' de David Medinets,
> 1999 si nici acolo nu gasesc.
> 
> Eu sint zero la shell programing, dar nu vreau sa fac munca de mina si
> parca nu as scrie un program in fortran ca sa ma ajute.
> 
> Am de creiat multe fisiere de genul:
> 
> Co(0001), 1x1 hcp, $i lo+5lv
>  2.4955
>      1.0000000000000000    0.0000000000000000    0.0000000000000000
>      0.5000000000000000    0.8660254037844386    0.0000000000000000
>      0.0000000000000000    0.0000000000000000    $mj
>   $i
> Direct
>   0.00000000000000000  0.00000000000000000  $k
>   0.33333333333333333  0.33333333333333333  $l
> ...
> 
> unde $i este variabila intr-un ciclu for (la sh) sau foreach (la csh).
> mj = sqrt(2/3) * (4+$i).
> 
> k si l sint de forma: 
> 
> k = 2*z / (4+$i)
> l = (2*z*1) / (4+$i)
> 
Nu m-am prins exact de formule, dar mi-a placut problema.
Efectiv o faci cel mai simplu cu bc, sau daca vrei ceva hibrid:

#!/bin/bash
let n=${1:-10};

for((i=1; i<n ; i++)) {
                
 bc -l > fisier_$i.txt <<EOF 
 i  = $i;
 mj = sqrt(2/3.0) * (4 + i);
 
 print "Co(0001), 1x1 hcp, ",i ," lo+5lv\n2.4955\n";
 print "1.0000000000000000    0.0000000000000000    0.0000000000000000\n";
 print "0.5000000000000000    0.8660254037844386    0.0000000000000000\n";
 print "0.0000000000000000    0.0000000000000000    ", mj, "\n";
 print  i, "\n";

 for (z=0; z < i/2 ; z++) {
        k = 2 * z / ( 4 + i);
        l = (2 * z + 1)/ (4 + i);
        print "Direct\n";
        print "0.00000000000000000  0.00000000000000000    ", k,"\n";
        print "0.33333333333333333  0.33333333333333333    ", l,"\n";
 }
quit 
EOF
}

In fine, din cate inteleg doar mj necesita in virgula mobila cu precizie mai
mare, si pentru asta poti folosi mj=$(echo "mj=sqrt(2/3.0) * (4+$i)" | bc -l)
si dupa aia bucle `for' in bash.

ciao,

-- teodor
---
Send e-mail to '[EMAIL PROTECTED]' with 'unsubscribe rlug' to 
unsubscribe from this list.

Raspunde prin e-mail lui