Chaine de caractères paramétrée

Fermé
j_charles Messages postés 1 Date d'inscription jeudi 24 juillet 2008 Statut Membre Dernière intervention 24 juillet 2008 - 24 juil. 2008 à 10:56
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 25 juil. 2008 à 06:27
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.
A voir également:

3 réponses

jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
24 juil. 2008 à 12:28
Salut,

Entoure la valeur de ta variable "REQUETE" par des quotes doubles et non des quotes simples :
REQUETE="..."
;-))
0
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
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
25 juil. 2008 à 06:27
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