Re: scripts shell

トップ ページ

このメッセージに返信
著者: Frédéric BOITEUX
日付:  
To: guilde
題目: Re: scripts shell
mosfet@??? wrote:
>
> Bonjour,


    Salut,


> Je desirerais automatiser quelques taches a l'aide d'un script shell;
>
> ---script d'echantillonage original--
> #!/usr/bin/expect

    ^^^^^^^^^^^^^^^
    cette ligne indique que ton script est interprèté par l'outil
'expect', et non un shell standard ;
d'après mes souvenirs, il s'agit d'un dérivé de Tcl ! 


> set timeout 1
> eval spawn "./miniterm"
>
> send "pws0\r\n"
> expect ">"
> send "prs\r\n"
> expect ">"
>
> send "pws16\r\n"
> expect ">"
> send "prs\r\n"
> expect ">"
>
> send "pws32\r\n"
> expect ">"
> send "prs\r\n"
> expect ">"
> ---fin script echantillonage-----------
>
> Je desire utiliser une boucle de type for de la facon suivante:
> for (i=0; i<=128; i=i+16)
> {
> }
>
> 1) Comment cela est-il possible grace a un sript shell ??


Pour ton cas précis, tu peux écrire :
for {set i 0} {$i <= 128} {incr i 16} {
send "$i\r\n"
expect ">"
send "prs\r\n"
expect ">"
}

> 2) Ensuite, le script principal, appelant celui-ci formate la sortie
> avec un grep, puis compte le nombre de lignes (wc -l); si le nb de lignes
> != 9 alors relancer le programme de conversion jusqu'a ce que le nb de
> lignes soit egal a 9.
>
> en gros:
> while (nblignes!=9)
>         {
>         echantillone > log
>         nblignes='wc -l log'
>         }
> toujours en shell, comment cela est-il possible ?


en shell de base (sh, ou bourne shell), tu peux écrire :

#!/bin/sh

nb=0
while ( test $nb -ne 9 ) do
nb=`echantillone | wc -l`
done


> Merci. Fabien.
>
> Fabien BLANC-PAQUES | fabien@???