Pages : 1
#1 Le 17/02/2006, à 17: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, à 19: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
Dernière modification par requiem (Le 17/02/2006, à 19:47)
Le problème avec Linux, ce n'est pas Linux, c'est le linuxien
Hors ligne
#3 Le 18/02/2006, à 10: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
Hors ligne
#4 Le 18/02/2006, à 14: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
Pages : 1