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. 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
    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