Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 17/02/2006, à 18:19

mezhoud

scrit sur le bash

Bonjour,
Je suis entrain d'apprendre l'usage des script sur le bash (biensûre sur ubuntu). voici le script:
#!/bin/bash
#croissance de population
#test des arguments

if  ($argv !=5) then
   echo "quatre arguments requis \!"
   exit 1

set pop = $1
set max = $2
set tox = $3
set mxp = $4
set res = $5

@ i = 0

echo $i  $pop > $res

while  $i < $max
set pop = `(echo "scale = 6; $pop + ( $pop * $tox * ( 1.0 - ( $pop / $mxp ) ) ) ") | bc -l `
    # on verifie si pop est négatif
    set png = ` echo "$pop < 0" | bc -l `
     if ( $png == 1 ) then
           set pop = 0
     fi
   @i++
  echo $i $pop >> $res
done

quand je lance le script il me dit:

./croissance-non-lineaire.sh: line 28: syntax error near unexpected token `done'
./croissance-non-lineaire.sh: line 28: ` done'

la ligne 28 correspont à la dernière "done", alors j'ai changé done par exit ou end ça ne marche pas.

merci pour vos remarques

#2 Le 17/02/2006, à 20:43

requiem

Re : scrit sur le bash

-Tu as oublié le do dans ton while
-la syntaxe de ton premier if n'est pas correct : il faut le fermer avec un fi et le then est mal placé
-ton utilisation de la fonction set n'est pas correct, elle sert à découper le contenu d'une variable en plusiers mots et pas à faire une affectation.

Mais même avec ces changements, il reste du boulot.
Bon courage wink

Dernière modification par requiem (Le 17/02/2006, à 20:47)


Le problème avec Linux, ce n'est pas Linux, c'est le linuxien

Hors ligne

#3 Le 18/02/2006, à 11:55

Omega

Re : scrit sur le bash

petite question (hors sujet):

Ou peut-on apprendre le Bash ?
si quelqu'un peut me conseille un bon site sympa pour apprendre et débuter
merci wink

Hors ligne

#4 Le 18/02/2006, à 15:07

mezhoud

Re : scrit sur le bash

Bonjour,
oui vous avez raison (requiem), j'ai précipité avant de poser ma question. A part les fautes d'inattention le script est  fait pour un shell csh et no bash. c'est pour cela que j'ai tjrs des erreurs de syntax.

Example de commande sur le bash:

pour assigner une variable il faut faire
[img]a=1
ou
a="toto"[/img]

pour additionner des entiers, il faut faire l'opération entre $(( ...))
par exemple:
[img]a=1
b=$(($a+2*$a+9))[/img]

Pour les while c'est
[img]while test
  do
    ...(commandes)
    ...
  done[/img]
(en général, bash n'aime pas trop les espaces...)
Vous trouverez une description courte et bien faite du bash sur :
http://www.linux-kheops.com/doc/cours/j … ation.html
(site qui contient d'autres informations intéressantes, voir http://www.linux-kheops.com/doc/cours/jgourdin/).


Le plus simple si vous avez des scripts applicable sur le shell csh  est de passer tout simplement au shell tcsh ou csh en tapant sur le terminal:  csh . Attention ce n'est pas sûre que ton système reconnait cette commande, c'est le cas de mon système alors je profite de poser la question suivante:
[img]comment passer du bash au csh d'une façon provisoir??????[/img]

Il existe aussi un ordre qui change votre shell de démarrage (cad que la prochaine fois que vous vous loggerez, vous serez en tcsh), ces ordre est chsh (pour "change shell"). De temps en temps, sur certains système un peu vérouillé, l'administrateur interdit l'usage de ce programme pour raisons de sécurité (mais ce n'est pas toujours le cas).

Vous l'utilisez comme suit
1°) voir le chemin absolu du tcsh en faisant:
[img]which tcsh[/img]
(notez le chemin, généralement, /bin/tcsh)
2° faire:
[img]chsh /bin/tcsh[/img]
(ou un autre chemin si vous avez noté un autre chemin absolu pour le tcsh, puis se delogger et se relogger, vous devriez être sous tcsh)

ciao

Hors ligne