J'ai un script shell qui lance un exécutable qui fait
parfois un abort. Si le shell est bash, il me donne un
message du genre
dotest: line 9: 10166 Aborted
que bash soit lancé par sh ou bash. Je n'arrive pas à faire
disparaître ce message. Avec zsh ou ksh (en fait pdksh), je
ne l'ai pas. Quelqu'un connaîtrait il un moyen de le faire
disparaître?
A+
--
Jean-Marc
Site de usenet-fr: http://www.usenet-fr.news.eu.org
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Pascal Bourguignon
Jean-Marc Bourguet writes:
J'ai un script shell qui lance un exécutable qui fait parfois un abort. Si le shell est bash, il me donne un message du genre
dotest: line 9: 10166 Aborted
Si j'ai bien compris, le programme dotest qui est lancé sur a ligne 9 de bash sort ayant reçu un signal non traité SIGABRT, retournant donc un status 128+6.
que bash soit lancé par sh ou bash. Je n'arrive pas à faire disparaître ce message. Avec zsh ou ksh (en fait pdksh), je ne l'ai pas. Quelqu'un connaîtrait il un moyen de le faire disparaître?
Bien que je n'arrive pas à reproduire ce message, si mon diagnostique est correct il faudrait modifier le programme dotest pour qu'il gère le signal ABRT, ou bien il devrait être possible de traiter le status: j'essayerais:
J'ai un script shell qui lance un exécutable qui fait
parfois un abort. Si le shell est bash, il me donne un
message du genre
dotest: line 9: 10166 Aborted
Si j'ai bien compris, le programme dotest qui est lancé sur a ligne 9
de bash sort ayant reçu un signal non traité SIGABRT, retournant donc
un status 128+6.
que bash soit lancé par sh ou bash. Je n'arrive pas à faire
disparaître ce message. Avec zsh ou ksh (en fait pdksh), je
ne l'ai pas. Quelqu'un connaîtrait il un moyen de le faire
disparaître?
Bien que je n'arrive pas à reproduire ce message, si mon diagnostique
est correct il faudrait modifier le programme dotest pour qu'il gère
le signal ABRT, ou bien il devrait être possible de traiter le status:
j'essayerais:
J'ai un script shell qui lance un exécutable qui fait parfois un abort. Si le shell est bash, il me donne un message du genre
dotest: line 9: 10166 Aborted
Si j'ai bien compris, le programme dotest qui est lancé sur a ligne 9 de bash sort ayant reçu un signal non traité SIGABRT, retournant donc un status 128+6.
que bash soit lancé par sh ou bash. Je n'arrive pas à faire disparaître ce message. Avec zsh ou ksh (en fait pdksh), je ne l'ai pas. Quelqu'un connaîtrait il un moyen de le faire disparaître?
Bien que je n'arrive pas à reproduire ce message, si mon diagnostique est correct il faudrait modifier le programme dotest pour qu'il gère le signal ABRT, ou bien il devrait être possible de traiter le status: j'essayerais:
J'ai un script shell qui lance un exécutable qui fait parfois un abort. Si le shell est bash, il me donne un message du genre
dotest: line 9: 10166 Aborted
que bash soit lancé par sh ou bash. Je n'arrive pas à faire disparaître ce message. Avec zsh ou ksh (en fait pdksh), je ne l'ai pas. Quelqu'un connaîtrait il un moyen de le faire disparaître?
C'est étonnant, mais il n'y a apparement pas d'option de Bash pour supprimer ces messages indiquant l'état de terminaison du processus. Du moins pas pour un script.
Pour un shell interactif on peut utiliser l'option +m : $ ./dotest Aborted $ set +m $ ./dotest $
Mais ça ne marche pas dans un script. $ cat script.sh #! /bin/sh set +m ./dotest
$ ./script.sh ./script.sh: line 3: 1874 Abandon ./dotest $
J'ai trouvé deux solutions, mais elles ne sont pas très élégantes.
La première consiste à éliminer la sortie d'erreur du shell avec un "exec 2>/dev/null" avant de lancer la commande. Si celle-ci a besoin d'écrire sur sa sortie d'erreur, il faut toutefois la rétablir.
En voici un exemple : $ cat script.sh #! /bin/sh exec 2>/dev/null ./dotest 2>/dev/tty
$ ./script.sh $
Une autre possibilité tire parti du fait que lors de l'exécution d'un pipeline, Bash n'affiche le compte rendu que pour la dernière commande. On peut donc rajouter un pipeline transparent derrière la commande pour qu'elle ne soit plus la dernière :
$ cat script.sh #! /bin/sh ./dotest | cat
$ ./script.sh $ Le problème est que l'on perd alors le code de retour, et qu'on ne peut plus tester l'erreur par la suite.
J'ai un script shell qui lance un exécutable qui fait
parfois un abort. Si le shell est bash, il me donne un
message du genre
dotest: line 9: 10166 Aborted
que bash soit lancé par sh ou bash. Je n'arrive pas à faire
disparaître ce message. Avec zsh ou ksh (en fait pdksh), je
ne l'ai pas. Quelqu'un connaîtrait il un moyen de le faire
disparaître?
C'est étonnant, mais il n'y a apparement pas d'option de Bash
pour supprimer ces messages indiquant l'état de terminaison du
processus. Du moins pas pour un script.
Pour un shell interactif on peut utiliser l'option +m :
$ ./dotest
Aborted
$ set +m
$ ./dotest
$
Mais ça ne marche pas dans un script.
$ cat script.sh
#! /bin/sh
set +m
./dotest
$ ./script.sh
./script.sh: line 3: 1874 Abandon ./dotest
$
J'ai trouvé deux solutions, mais elles ne sont pas très élégantes.
La première consiste à éliminer la sortie d'erreur du shell avec
un "exec 2>/dev/null" avant de lancer la commande. Si celle-ci
a besoin d'écrire sur sa sortie d'erreur, il faut toutefois la
rétablir.
En voici un exemple :
$ cat script.sh
#! /bin/sh
exec 2>/dev/null
./dotest 2>/dev/tty
$ ./script.sh
$
Une autre possibilité tire parti du fait que lors de l'exécution
d'un pipeline, Bash n'affiche le compte rendu que pour la dernière
commande. On peut donc rajouter un pipeline transparent derrière
la commande pour qu'elle ne soit plus la dernière :
$ cat script.sh
#! /bin/sh
./dotest | cat
$ ./script.sh
$
Le problème est que l'on perd alors le code de retour, et qu'on
ne peut plus tester l'erreur par la suite.
J'ai un script shell qui lance un exécutable qui fait parfois un abort. Si le shell est bash, il me donne un message du genre
dotest: line 9: 10166 Aborted
que bash soit lancé par sh ou bash. Je n'arrive pas à faire disparaître ce message. Avec zsh ou ksh (en fait pdksh), je ne l'ai pas. Quelqu'un connaîtrait il un moyen de le faire disparaître?
C'est étonnant, mais il n'y a apparement pas d'option de Bash pour supprimer ces messages indiquant l'état de terminaison du processus. Du moins pas pour un script.
Pour un shell interactif on peut utiliser l'option +m : $ ./dotest Aborted $ set +m $ ./dotest $
Mais ça ne marche pas dans un script. $ cat script.sh #! /bin/sh set +m ./dotest
$ ./script.sh ./script.sh: line 3: 1874 Abandon ./dotest $
J'ai trouvé deux solutions, mais elles ne sont pas très élégantes.
La première consiste à éliminer la sortie d'erreur du shell avec un "exec 2>/dev/null" avant de lancer la commande. Si celle-ci a besoin d'écrire sur sa sortie d'erreur, il faut toutefois la rétablir.
En voici un exemple : $ cat script.sh #! /bin/sh exec 2>/dev/null ./dotest 2>/dev/tty
$ ./script.sh $
Une autre possibilité tire parti du fait que lors de l'exécution d'un pipeline, Bash n'affiche le compte rendu que pour la dernière commande. On peut donc rajouter un pipeline transparent derrière la commande pour qu'elle ne soit plus la dernière :
$ cat script.sh #! /bin/sh ./dotest | cat
$ ./script.sh $ Le problème est que l'on perd alors le code de retour, et qu'on ne peut plus tester l'erreur par la suite.
J'ai un script shell qui lance un exécutable qui fait parfois un abort. Si le shell est bash, il me donne un message du genre
dotest: line 9: 10166 Aborted
Si j'ai bien compris, le programme dotest qui est lancé sur a ligne 9 de bash sort ayant reçu un signal non traité SIGABRT, retournant donc un status 128+6.
Non, dotest est un shell qui lance un programme en ligne 9, ce programme se terminant par un abort.
$ cat doabort.c #include <stdlib.h>
int main() { abort(); } $ cat dotest #! /bin/bash
echo Avant ./doabort echo "Status=$?" Avant ./dotest: line 4: 10377 Aborted ./doabort Status4
que bash soit lancé par sh ou bash. Je n'arrive pas à faire disparaître ce message. Avec zsh ou ksh (en fait pdksh), je ne l'ai pas. Quelqu'un connaîtrait il un moyen de le faire disparaître?
Bien que je n'arrive pas à reproduire ce message, si mon diagnostique est correct il faudrait modifier le programme dotest pour qu'il gère le signal ABRT, ou bien il devrait être possible de traiter le status: j'essayerais:
Le programme lancé par dotest est non modifiable.
Merci pour l'idée.
-- Jean-Marc Site de usenet-fr: http://www.usenet-fr.news.eu.org
J'ai un script shell qui lance un exécutable qui fait
parfois un abort. Si le shell est bash, il me donne un
message du genre
dotest: line 9: 10166 Aborted
Si j'ai bien compris, le programme dotest qui est lancé
sur a ligne 9 de bash sort ayant reçu un signal non traité
SIGABRT, retournant donc un status 128+6.
Non, dotest est un shell qui lance un programme en ligne 9,
ce programme se terminant par un abort.
$ cat doabort.c
#include <stdlib.h>
int main()
{
abort();
}
$ cat dotest
#! /bin/bash
echo Avant
./doabort
echo "Status=$?"
Avant
./dotest: line 4: 10377 Aborted ./doabort
Status4
que bash soit lancé par sh ou bash. Je n'arrive pas à faire
disparaître ce message. Avec zsh ou ksh (en fait pdksh), je
ne l'ai pas. Quelqu'un connaîtrait il un moyen de le faire
disparaître?
Bien que je n'arrive pas à reproduire ce message, si mon
diagnostique est correct il faudrait modifier le programme
dotest pour qu'il gère le signal ABRT, ou bien il devrait
être possible de traiter le status: j'essayerais:
Le programme lancé par dotest est non modifiable.
Merci pour l'idée.
--
Jean-Marc
Site de usenet-fr: http://www.usenet-fr.news.eu.org
J'ai un script shell qui lance un exécutable qui fait parfois un abort. Si le shell est bash, il me donne un message du genre
dotest: line 9: 10166 Aborted
Si j'ai bien compris, le programme dotest qui est lancé sur a ligne 9 de bash sort ayant reçu un signal non traité SIGABRT, retournant donc un status 128+6.
Non, dotest est un shell qui lance un programme en ligne 9, ce programme se terminant par un abort.
$ cat doabort.c #include <stdlib.h>
int main() { abort(); } $ cat dotest #! /bin/bash
echo Avant ./doabort echo "Status=$?" Avant ./dotest: line 4: 10377 Aborted ./doabort Status4
que bash soit lancé par sh ou bash. Je n'arrive pas à faire disparaître ce message. Avec zsh ou ksh (en fait pdksh), je ne l'ai pas. Quelqu'un connaîtrait il un moyen de le faire disparaître?
Bien que je n'arrive pas à reproduire ce message, si mon diagnostique est correct il faudrait modifier le programme dotest pour qu'il gère le signal ABRT, ou bien il devrait être possible de traiter le status: j'essayerais:
Le programme lancé par dotest est non modifiable.
Merci pour l'idée.
-- Jean-Marc Site de usenet-fr: http://www.usenet-fr.news.eu.org
Jean-Marc Bourguet
Christophe Blaess writes:
J'ai trouvé deux solutions, mais elles ne sont pas très élégantes.
La première consiste à éliminer la sortie d'erreur du shell avec un "exec 2>/dev/null" avant de lancer la commande. Si celle-ci a besoin d'écrire sur sa sortie d'erreur, il faut toutefois la rétablir.
C'est la solution que j'ai adoptée. Je redirigeais déjà la sortie d'erreur du programme lancé.
Une autre possibilité tire parti du fait que lors de l'exécution d'un pipeline, Bash n'affiche le compte rendu que pour la dernière commande. On peut donc rajouter un pipeline transparent derrière la commande pour qu'elle ne soit plus la dernière :
$ cat script.sh #! /bin/sh ./dotest | cat
$ ./script.sh $ Le problème est que l'on perd alors le code de retour, et qu'on ne peut plus tester l'erreur par la suite.
Ce qui est inacceptable dans le contexte.
-- Jean-Marc Site de usenet-fr: http://www.usenet-fr.news.eu.org
Christophe Blaess <pas@de.reponse> writes:
J'ai trouvé deux solutions, mais elles ne sont pas très élégantes.
La première consiste à éliminer la sortie d'erreur du shell avec
un "exec 2>/dev/null" avant de lancer la commande. Si celle-ci
a besoin d'écrire sur sa sortie d'erreur, il faut toutefois la
rétablir.
C'est la solution que j'ai adoptée. Je redirigeais déjà la
sortie d'erreur du programme lancé.
Une autre possibilité tire parti du fait que lors de l'exécution
d'un pipeline, Bash n'affiche le compte rendu que pour la dernière
commande. On peut donc rajouter un pipeline transparent derrière
la commande pour qu'elle ne soit plus la dernière :
$ cat script.sh
#! /bin/sh
./dotest | cat
$ ./script.sh
$
Le problème est que l'on perd alors le code de retour, et qu'on
ne peut plus tester l'erreur par la suite.
Ce qui est inacceptable dans le contexte.
--
Jean-Marc
Site de usenet-fr: http://www.usenet-fr.news.eu.org
J'ai trouvé deux solutions, mais elles ne sont pas très élégantes.
La première consiste à éliminer la sortie d'erreur du shell avec un "exec 2>/dev/null" avant de lancer la commande. Si celle-ci a besoin d'écrire sur sa sortie d'erreur, il faut toutefois la rétablir.
C'est la solution que j'ai adoptée. Je redirigeais déjà la sortie d'erreur du programme lancé.
Une autre possibilité tire parti du fait que lors de l'exécution d'un pipeline, Bash n'affiche le compte rendu que pour la dernière commande. On peut donc rajouter un pipeline transparent derrière la commande pour qu'elle ne soit plus la dernière :
$ cat script.sh #! /bin/sh ./dotest | cat
$ ./script.sh $ Le problème est que l'on perd alors le code de retour, et qu'on ne peut plus tester l'erreur par la suite.
Ce qui est inacceptable dans le contexte.
-- Jean-Marc Site de usenet-fr: http://www.usenet-fr.news.eu.org