Linux - script bash - Recup. code erreur sql

Résolu
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

2 réponses

  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. Modérateur
      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