bash vs mysql

bash vs mysql - Linux et OS Alternatifs

Marsh Posté le 26-06-2004 à 11:26:18    

Bonjour,
J'essaie de requeter ma base de données MySQL je fait :
#extraction des donnees de la table modif
temp=`mysql -h localhost -u $user -p$pass -D$db -B -N -e "SELECT * FROM modif WHERE id=$1"`
 
#importer le res dans un tablo
res=($temp)
 
puis pour consulter les valeurs de chaque colone j'utilise
echo ${res[0]}
#ou 0 est l'indice de la premiere colonne de la ligne selectionée
 
jusqu'a la tous marche parfait, maintenant j'ai une table qui peut contenir des colonnes a valeur vide (NULL), alors quand je fait echo ${res[5]} où 5 l'indice de la colonne qui contient un element de valeur NULL (vide) :) l'echo m'affiche la valeur de la premiere colonne qui vient aprés la cinquiéme et qu'a une valeur NON NULLE.
exemple :
 
colonne1='valeur1' colonne2='valeur2' colonne3='valeur3' colonne4='valeur4' colonne5='' colonne6='' colonne7='valeur7'
 
voila ce que la variabke $temp doit contenir :
$temp=valeur1 valeur2 valeur3 valeur4 valeur7
 
et donc ${res[5]} me renvoit valeur7 puisque j'ai deux valeurs NULLES et que lorsque j'importe une chaine dans un tableau bash considere que chaque espace est un separateur de colonne.
 
comment je pourrais depasser ce probléme ?
merci d'avance ;)
 

Reply

Marsh Posté le 26-06-2004 à 11:26:18   

Reply

Marsh Posté le 26-06-2004 à 11:54:50    

essaie de changer le séparateur de colonnes avant de mettre temp dans res. avec tr par exemple. et après joue sur le IFS. ca peut etre un debut d'idée :D

Reply

Marsh Posté le 26-06-2004 à 13:04:51    

salut Zaib3k et merci pour votre aide,
j'ai pas trop bien compris le truc, surtout l'IFS

Reply

Marsh Posté le 26-06-2004 à 13:11:53    

IFS est le séparateur de champs. par defaut il vaut " " et donc il peut etre rempalcé par autre chose. : par exemple. a partir de la, une champs = " " serait pris en compte.
 
Copie/colle une ligne type ici pour voir.

Reply

Marsh Posté le 26-06-2004 à 13:16:00    

comment jpourrais definir l'IFS ?

Reply

Marsh Posté le 26-06-2004 à 13:19:52    

IFS=":"
 
 
 

echo "blabla toto   lala" | tr " " ":"  |  sed 's/::/: /g'


 
renvera blabla:toto: :lala et la tout pourra faire ta sauce si IFS est a :
 
je suis pas super clair mais l'idée est la :D


Message édité par Zaib3k le 26-06-2004 à 13:20:22
Reply

Marsh Posté le 26-06-2004 à 13:29:42    

wé ca se voit :)
merci beaucoups :)

Reply

Marsh Posté le 26-06-2004 à 13:30:11    

de nada

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed