Bonjour,
Je travaille avec des scripts Shell, où il y a de nombreux appels à SQLPlus, pour interroger une base Oracle. Les retours de SQLPlus sont stockés dans une variable. On a alors des trucs du genre :
Code Exemple 1 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 > echo $res_compare2 Connected. -1
Code Exemple 2 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 > echo $res_compare2 Connected. OK. La procedure s'est bien passee.
Pour tout remettre en ligne et enlever le message "connected.", les gens qui m'ont précédé sur le projet ont eu la (fausse) bonne idée de faire comme ça :
Je dis que c'est une fausse bonne idée, car dans le 1er exemple ci-dessus, "-1" est considéré comme une option et donc la variable est vide après le "shift". Et après, bibi cherche pourquoi le script fait de m***e !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 set $res_compare shift 1 res_compare=`print $*`
Je souhaite donc trouver une technique plus propre pour enlever le "connected.". Pour l'exemple 1, je fais simplement :
Je voudrais déjà savoir s'il y a une méthode plus élégante que cela.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 res_compare=$(print ${res_compare} | grep -v "Connected.")
Sauf, ça ne m'élimine pas les retours à la ligne... Dans le cas de l'exemple 2, je souhaiterais obtenir "OK. La procedure s'est bien passee.". Je me dit que je pourrais utiliser une commande perl pour remplacer les \n par des espaces, mais ça me parait à nouveau peu élégant...
Auriez-vous des suggestions pour faire ça de façon propre et efficace SVP ?
Merci d'avance !![]()
Partager