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 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

DoK a écrit :

J'ai mis mon chef à Ubuntu.

BRAVO

DoK a écrit :
#!/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

DoK a écrit :

#!/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