Linux - script bash - Recup. code erreur sql

Résolu/Fermé
B@|-|@N Messages postés 386 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 7 décembre 2007 - 10 févr. 2005 à 09:51
 toto - 26 févr. 2008 à 14:46
Bonjour à tous et à toutes.

J'ai un petit problème dans le développement d'un script bash sous Linux (distribution RedHat 9.0).

#=====================

Voilà comment je procède :
req_sql="
        USE maBase;\n
        SELECT monChamp
        FROM maTable
        WHERE monChamp='maValeur'
        INTO OUTFILE 'chemin/monFichier'
        FIELDS TERMINATED BY '\t'
        LINES TERMINATED BY '\n';\n
";
echo -e $req_sql > chemin/requete.sql;
$mysql_dir/mysql -u monLogin --password=monPass < $data_dir/requete.sql;
if [ -e $data_dir/requete.sql ]; then rm -f $data_dir/requete.sql; fi

Pour l'instant la requete me renvoie le message suivant :
ERROR 1 (HY000) at line 2: Can't create/write to file '/home/omclinux/topologie/data1/tmp.txt' (Errcode: 13)


Et je voudrais récupérer le code erreur à la fin afin de faire un perror dessus pour me renvoyer un message explicatif.

Donc comment puis-je récupérer ce code erreur ? Comment puis-je récupérer le message d'erreur tout court, après je peux me débrouiller.

#=====================

Une autre question, pendant que j'y suis.
Avec la commande echo dans un script bash, comment écrire un message en couleur (rouge ou vert par exemple) ?

#=====================

Merci d'avance pour vos réponses.

B@|-|@N

Close the world.||.txen eht nepO
A voir également:

2 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
10 févr. 2005 à 11:45
Salut,

Le code d'erreur attribué par défaut est "2", donc en général il suffit de rediriger ce code dans un fichier en ajoutant en fin de commande "2>":
[jp@Mandrake tmpfs]$ ls
[jp@Mandrake tmpfs]$ ls moi 2> ficerror.txt
[jp@Mandrake tmpfs]$ ls
ficerror.txt
[jp@Mandrake tmpfs]$ cat ficerror.txt 
ls: moi: No such file or directory
[jp@Mandrake tmpfs]$ 
Utiliser ">>" pour éviter l'écrasement et ajouter à la suite...

Pour la coloration du shell :
http://www.bsdbooks.net/shells/scripting/fr/colorizing.html

Un bon bouquin sur le sujet (shell) :
http://tinyurl.com/5onz7
1
pour colorer il faut ajouter le parametre "-e" à la commande echo pour qu'elle puisse comprendre ce que vous allez lui sortir...


par exemple, étant donné les variables suivantes dans votre script :

# COULEURS
COLOROFF="\033[1;0m" # standart color
GREENCOLOR="\033[1;32m" # green
WHITECOLOR="\033[1;37m" # white
BLUECOLOR="\033[1;36m" # blue
DARKBLUECOLOR="\033[1;34m" # darkblue
REDCOLOR="\033[1;31m" # red
LILACOLOR="\033[1;35m" # lilac
YELLOWCOLOR="\033[1;33m" # yellow

vous pouvez mettre

echo -e "${DARKBLUECOLOR}texte colore${COLOROFF} et texte non colore"

Si vous mettez pas le "-e" ca marchera pas, ca vous affichera la valeur de la variable comme du texte lambda.

bon script
1