Insertion de la valeur d'une variable dans une autre variable

Co0oX Messages postés 7 Date d'inscription mardi 20 avril 2010 Statut Membre Dernière intervention 21 mai 2010 - 22 déc. 2009 à 11:22
Co0oX Messages postés 7 Date d'inscription mardi 20 avril 2010 Statut Membre Dernière intervention 21 mai 2010 - 23 déc. 2009 à 14:35
Bonjour,

Dans le cadre d'un TP UNIX, j'ai rencontré un problème.

Comment pourrais-je faire pour que dans cette expression:

for e in $elements ; do
            {
                i = 1;
                classCi=`echo $e | tr '.' '/'`.java
                classCimod=`expr "$classCi" : '.*/\(.*\)\..*'`
                cheminClassCi=`expr "$classCi" : '\(.*\)/.*'`
                i = i + 1;
            }


j'ai des variables classCi, classCimod et cheminClassCi où le i n'est pas le caractère i (sinon la variable est écrasé à chaque nouvelle boucle) mais le nombre qui est attribué à la variable i, nombre qui s'incrémente à chaque fin de boucle, afin de différencier les différentes classes.

Merci de votre aide et désolé pour ma n00bitude dans le domaine ^^

4 réponses

cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
22 déc. 2009 à 12:46
Tu as typiquement besoin d'un tableaux. Quel langage de scripting utilises-tu ?
(sh, bash, zsh, ksh, csh ?)
0
Co0oX Messages postés 7 Date d'inscription mardi 20 avril 2010 Statut Membre Dernière intervention 21 mai 2010
23 déc. 2009 à 14:16
sh, mais je peux aussi utiliser bsh ;)
0
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
23 déc. 2009 à 14:29
Pour pouvoir utiliser les tableaux, utilise bash (ou zsh).

Voici à quoi pourrait ressembler ton code avec des tableaux (je ne sais pas si ça fonctionne, je t'ai juste mis l'utilisation de tableaux):

#!/bin/bash

elements="titi toto tutu"

i=1;
for e in $elements; do
    classC[$i]=`echo $e | tr '.' '/'`.java
    classCmod[$i]=`expr "${classC[$i]}" : '.*/\(.*\)\..*'`
    cheminClassC[$i]=`expr "${classC[$i]}" : '\(.*\)/.*'`
    i=$(($i + 1))
done

# Affichage

for e in `seq 1 $(($i - 1))`; do
    echo $e
    echo "classC = " ${classC[$e]}
    echo "classCmod = " ${classCmod[$e]}
    echo "cheminClassC = " ${cheminClassC[$e]}
done
0
Co0oX Messages postés 7 Date d'inscription mardi 20 avril 2010 Statut Membre Dernière intervention 21 mai 2010
23 déc. 2009 à 14:35
Merci de ton aide!

Je vais pour l'instant contourner mon problème avec une solution donnée par un ami, mais je testerai sans faute ta méthode ;)
0
Rejoignez-nous