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

Signaler
Messages postés
7
Date d'inscription
mardi 20 avril 2010
Statut
Membre
Dernière intervention
21 mai 2010
-
Messages postés
7
Date d'inscription
mardi 20 avril 2010
Statut
Membre
Dernière intervention
21 mai 2010
-
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

Messages postés
3834
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
20 octobre 2021
124
Tu as typiquement besoin d'un tableaux. Quel langage de scripting utilises-tu ?
(sh, bash, zsh, ksh, csh ?)
Messages postés
7
Date d'inscription
mardi 20 avril 2010
Statut
Membre
Dernière intervention
21 mai 2010

sh, mais je peux aussi utiliser bsh ;)
Messages postés
3834
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
20 octobre 2021
124
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
Messages postés
7
Date d'inscription
mardi 20 avril 2010
Statut
Membre
Dernière intervention
21 mai 2010

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