Chaine de caractères paramétrée

Bonjour,

Je souhaite générer un fichier de requêtes SQL à parti d'un fichier CSV.
J'ai écrit le script suivant et je voudrais que dans REQUETE_TMP, ${valx} soit remplacé par la valeur lue dans le fichier.
Mais
ou bien les paramètres de la requête ne sont pas interprétés et restent à ${valx}
ou bien ils sont interprétés trop vite et leur valeur est vide.

#!/bin/sh
REQUETE='INSERT INTO TA01 (champ1, champ2, champ3, champ4) VALUES ${val1} , ${val2}, ${val3}, ${val4};'
traiter()
{
cat test.csv | while IFS=';' read val1 val2 val3 val4
do
echo ${val1} ${val2} ${val3} ${val4}
REQUETE_TMP="${REQUETE}"
echo "${REQUETE_TMP}" >> result.sql
done
}

traiter
#FIN

Est-ce que vous avez une idée ?
Merci
Jean-Charles.
Configuration: Windows XP
Internet Explorer 6.0

3 réponses

  1. Modérateur
    Salut,

    Entoure la valeur de ta variable "REQUETE" par des quotes doubles et non des quotes simples :
    REQUETE="..."
    ;-))
    0
    1. Avec les guillemets, ma requête devient systématiquement

      INSERT INTO TA01 (champ1, champ2, champ3, champ4) VALUES , , , ;

      puisque à l'initialisation de REQUETE, les paramètres ${val1} ${val2} ${val3} et ${val4} ne sont pas encore initialisés

      Jean-Charles.
      0
      1. Modérateur
        Salut,

        Alors essaye avec "eval" :
        [tmpfs]$ REQUETE='$var'
        [tmpfs]$ echo $REQUETE
        $var
        
        [tmpfs]$ var="coucou"
        
        [tmpfs]$ echo "$REQUETE"
        $var
        
        [tmpfs]$ eval echo "$REQUETE"
        coucou
        
        [tmpfs]$
        ;-))
        0