#1 Le 08/06/2007, à 17:02
- DoK
help pour création d'un tableau par un script shell
Salut,
J'ai mis mon chef à Ubuntu. Il a créé chez lui un script shell :
#!/bin/sh
j=1
for i in $*
do
tableau[$j]=${i}
j=`expr $j + 1`
echo $i
done
Quand on le lance sous ubuntu, sh dok.sh 10 100, on a le résultat suivant :
dok.sh: 8: tableau[1]=10: not found
10
dok.sh: 8: tableau[2]=100: not found
100
Le echo passe bien, mais l'erreur provient de l'affectation du tableau. On l'a mis sur un de nos serveurs au boulot (sous redhat serveur) et pas de message d'erreur.
Quelqu'un peut-il m'aider à corriger ? Merci
Hors ligne
#2 Le 08/06/2007, à 21:10
- JoelS
Re : help pour création d'un tableau par un script shell
J'ai mis mon chef à Ubuntu.
BRAVO
#!/bin/sh
Attention, si tu commences ton script par /bin/sh, tu dis au shell installé en /bin/sh de se comporter comme un script Bourne Shell de base. Et à ma connaissance, le Bourne Shell de base ne gère pas vraiment les tableaux. Ce sont des choses qui sont arrivées par la suite.
En général, sur une Ubuntu, le /bin/sh est en fait un dash qui va s'exécuter comme un Bourne Shell. Sur un autre système, ça peut être autre chose (sur RedHat je pense que c'est dans les faits un bash).
Il est possible que dash soit plus strict en mode Bourne Shell que bash. Il faudrait explorer les pages de man respectives sur chaque système (Ubuntu et RedHat). Ensuite ça doit aussi dépendre de la version du binaire installé.
En général, il faut éviter les syntaxes avancées dans les shell si on veut qu'ils soient portables: pas de tableaux, pas de $(...), pas ou peu de maths, etc etc. Ou alors démarrer le bon shell (bash est certainement plus répandu que dash) en vérifiant si on reste dans ce que défini le man, ou encore carrément passer à un langage plus évolué (par exemple perl qui reste plus proche du shell que python ou ruby).
Hors ligne
#3 Le 08/06/2007, à 21:24
- BlaireauOne
Re : help pour création d'un tableau par un script shell
#!/bin/sh
j=1
for i in $*
do
tableau[$j]=${i}
j=`expr $j + 1`
echo $i
done
Une piste :
en ksh, la déclaration de tableau se fait comme suit :
set -A tableau
Hors ligne
#4 Le 10/06/2007, à 17:19
- DoK
Re : help pour création d'un tableau par un script shell
JoelS, merci de la piste, il est vrai qu'en laçant mon script via bash dok.sh 10 100 plus de message d'erreur.
BlaireauOne merci je vais explorer
Hors ligne