Y a-t-il mieux, pour supprimer le code d'erreur (pas le message) d'une
commande bash que "commande || true" ?
Pour que ma demande ne semble pas trop surprenante à ceux qui aiment
toujours remettre en cause le bienfondé des questions, c'est pour mettre
dans une configuration de système de sauvegarde (bacula) du genre :
dans une config générique qui sert à toutes les machines, mais qui pour
certaines renvoie une erreur (sans le || true) si le chemin n'existe pas,
mais surtout, interrompt totalement l'ensemble de la sauvegarde.
Ça m'évite de faire une config par machine, plus compliqué à maintenir,
sans toutefois être obligé de créer ces répertoires vides, juste pour que
la sauvegarde n'échoue pas.
Mais s'il n'y a pas mieux/plus propre que le "|| true", je laisse comme
ça.
Salut, peut-être un: "commande 2>/dev/null" J'ai vu ça dans des scripts au boulot... Ce n'est probablement pas une bonne pratique, mais bon... @+
Nicolas George
plapla , dans le message <5f1d55e5$0$6174$, a écrit :
Salut, peut-être un: "commande 2>/dev/null" J'ai vu ça dans des scripts au boulot... Ce n'est probablement pas une bonne pratique, mais bon...
Non, ce n'est pas du tout pareil. Christophe parle du code de retour du programme (qu'on peut observer avec « echo $? » juste après), 2> concerne sa sortie d'erreur, c'est à dire une partie de ce qu'il affiche.
plapla , dans le message <5f1d55e5$0$6174$426a34cc@news.free.fr>, a
écrit :
Salut,
peut-être un:
"commande 2>/dev/null"
J'ai vu ça dans des scripts au boulot... Ce n'est probablement pas une
bonne pratique, mais bon...
Non, ce n'est pas du tout pareil. Christophe parle du code de retour du
programme (qu'on peut observer avec « echo $? » juste après), 2> concerne sa
sortie d'erreur, c'est à dire une partie de ce qu'il affiche.
plapla , dans le message <5f1d55e5$0$6174$, a écrit :
Salut, peut-être un: "commande 2>/dev/null" J'ai vu ça dans des scripts au boulot... Ce n'est probablement pas une bonne pratique, mais bon...
Non, ce n'est pas du tout pareil. Christophe parle du code de retour du programme (qu'on peut observer avec « echo $? » juste après), 2> concerne sa sortie d'erreur, c'est à dire une partie de ce qu'il affiche.
Benoit Izac
Bonjour, Le 25/07/2020 à 02:03, Christophe PEREZ a écrit dans le message <rffssr$dqp$ :
Y a-t-il mieux, pour supprimer le code d'erreur (pas le message) d'une commande bash que "commande || true" ?
Mieux, je ne pense pas, plus court, oui : commande;: -- Benoit Izac
Bonjour,
Le 25/07/2020 à 02:03, Christophe PEREZ a écrit dans le message
<rffssr$dqp$1@serveur2.novazur.fr> :
Y a-t-il mieux, pour supprimer le code d'erreur (pas le message) d'une
commande bash que "commande || true" ?
Le Sun, 26 Jul 2020 13:09:43 +0200, Benoit Izac a écrit :
Mieux, je ne pense pas, plus court, oui :
Quand je dis "mieux", je veux dire "plus convenable/correct", pas forcément plus court.
commande;:
Hu ? Qu'est-ce ?
Christophe PEREZ
Le Sat, 25 Jul 2020 22:50:12 +0000, Stéphane CARPENTIER a écrit :
Ben si, de faire un test sur l'existence du répertoire avant de lancer la commande. Si tu veux avoir ta commande dans le crontab, ça va être assez subtile de faire tout tenir sur une ligne. Mais si le but est de lancer un script à partir du crontab, c'est facile. L'avantage du script, c'est que tu peux le faire évoluer sans avoir à modifier ton crontab.
Ce n'est pas une crontab. C'est une "commande" dans la configuration de bacula. Ça revient un peu au même en terme d'usage, mais pas en terme de traitement. [https://www.bacula.org/5.1.x-manuals/fr/main/main/ Configuring_Director.html] Voir l'option file-list (chercher bash dans le texte) C'est une façon d'utiliser une commande shell pour définir une liste de fichiers à sauvegarder. Mais si cette commande renvoie une erreur, la sauvegarde ne se lance pas, considérant sans doute qu'il y a une erreur de configuration, ce qui ici n'est pas le cas juste pour l'absence d'un répertoire. Je me demande si j'ai bien fait de préciser pourquoi je demandais s'il y avait mieux que "commande || true" finalement :D.
Le Sat, 25 Jul 2020 22:50:12 +0000, Stéphane CARPENTIER a écrit :
Ben si, de faire un test sur l'existence du répertoire avant de lancer
la commande. Si tu veux avoir ta commande dans le crontab, ça va être
assez subtile de faire tout tenir sur une ligne. Mais si le but est de
lancer un script à partir du crontab, c'est facile. L'avantage du
script, c'est que tu peux le faire évoluer sans avoir à modifier ton
crontab.
Ce n'est pas une crontab. C'est une "commande" dans la configuration de
bacula. Ça revient un peu au même en terme d'usage, mais pas en terme de
traitement.
[https://www.bacula.org/5.1.x-manuals/fr/main/main/
Configuring_Director.html]
Voir l'option file-list (chercher bash dans le texte)
C'est une façon d'utiliser une commande shell pour définir une liste de
fichiers à sauvegarder. Mais si cette commande renvoie une erreur, la
sauvegarde ne se lance pas, considérant sans doute qu'il y a une erreur
de configuration, ce qui ici n'est pas le cas juste pour l'absence d'un
répertoire.
Je me demande si j'ai bien fait de préciser pourquoi je demandais s'il y
avait mieux que "commande || true" finalement :D.
Le Sat, 25 Jul 2020 22:50:12 +0000, Stéphane CARPENTIER a écrit :
Ben si, de faire un test sur l'existence du répertoire avant de lancer la commande. Si tu veux avoir ta commande dans le crontab, ça va être assez subtile de faire tout tenir sur une ligne. Mais si le but est de lancer un script à partir du crontab, c'est facile. L'avantage du script, c'est que tu peux le faire évoluer sans avoir à modifier ton crontab.
Ce n'est pas une crontab. C'est une "commande" dans la configuration de bacula. Ça revient un peu au même en terme d'usage, mais pas en terme de traitement. [https://www.bacula.org/5.1.x-manuals/fr/main/main/ Configuring_Director.html] Voir l'option file-list (chercher bash dans le texte) C'est une façon d'utiliser une commande shell pour définir une liste de fichiers à sauvegarder. Mais si cette commande renvoie une erreur, la sauvegarde ne se lance pas, considérant sans doute qu'il y a une erreur de configuration, ce qui ici n'est pas le cas juste pour l'absence d'un répertoire. Je me demande si j'ai bien fait de préciser pourquoi je demandais s'il y avait mieux que "commande || true" finalement :D.
Christophe PEREZ
Le Sat, 25 Jul 2020 22:50:12 +0000, Stéphane CARPENTIER a écrit :
Ben si, de faire un test sur l'existence du répertoire avant de lancer la commande.
Et non faire un test n'a pas d'intérêt, puisque ce n'est pas une condition au lancement de la sauvegarde ou pas. JE veux juste que si le répertoire existe, il soit sauvegardé, et que s'il n'existe pas, il ne le soit évidemment pas, mais qu'il n'y ait pas de code d'erreur pour ne pas empêcher la sauvegarde de TOUT LE RESTE. Donc je persiste à dire que mon option est la bonne. Et je voulais juste savoir si le || true pour le faire était correct. Mais vu que personne n'a finalement proposé mieux, c'est que ça l'est. Merci à tous.
Le Sat, 25 Jul 2020 22:50:12 +0000, Stéphane CARPENTIER a écrit :
Ben si, de faire un test sur l'existence du répertoire avant de lancer
la commande.
Et non faire un test n'a pas d'intérêt, puisque ce n'est pas une
condition au lancement de la sauvegarde ou pas.
JE veux juste que si le répertoire existe, il soit sauvegardé, et que
s'il n'existe pas, il ne le soit évidemment pas, mais qu'il n'y ait pas
de code d'erreur pour ne pas empêcher la sauvegarde de TOUT LE RESTE.
Donc je persiste à dire que mon option est la bonne. Et je voulais juste
savoir si le || true pour le faire était correct. Mais vu que personne
n'a finalement proposé mieux, c'est que ça l'est.
Le Sat, 25 Jul 2020 22:50:12 +0000, Stéphane CARPENTIER a écrit :
Ben si, de faire un test sur l'existence du répertoire avant de lancer la commande.
Et non faire un test n'a pas d'intérêt, puisque ce n'est pas une condition au lancement de la sauvegarde ou pas. JE veux juste que si le répertoire existe, il soit sauvegardé, et que s'il n'existe pas, il ne le soit évidemment pas, mais qu'il n'y ait pas de code d'erreur pour ne pas empêcher la sauvegarde de TOUT LE RESTE. Donc je persiste à dire que mon option est la bonne. Et je voulais juste savoir si le || true pour le faire était correct. Mais vu que personne n'a finalement proposé mieux, c'est que ça l'est. Merci à tous.
Christophe PEREZ
Le Sun, 26 Jul 2020 10:28:58 +0000, Nicolas George a écrit :
"commande 2>/dev/null" J'ai vu ça dans des scripts au boulot... Ce n'est probablement pas une bonne pratique, mais bon...
Non, ce n'est pas du tout pareil. Christophe parle du code de retour du programme (qu'on peut observer avec « echo $? » juste après), 2> concerne sa sortie d'erreur, c'est à dire une partie de ce qu'il affiche.
Merci d'avoir répondu à ma place. J'avais pourtant bien précisé dans le message initial que c'était le code d'erreur que je voulais squizer, pas le message .Lui aussi je le vire, mais pour ça, je n'ai pas à poser la question sur la meilleure façon de faire.
Le Sun, 26 Jul 2020 10:28:58 +0000, Nicolas George a écrit :
"commande 2>/dev/null"
J'ai vu ça dans des scripts au boulot... Ce n'est probablement pas une
bonne pratique, mais bon...
Non, ce n'est pas du tout pareil. Christophe parle du code de retour du
programme (qu'on peut observer avec « echo $? » juste après), 2>
concerne sa sortie d'erreur, c'est à dire une partie de ce qu'il
affiche.
Merci d'avoir répondu à ma place.
J'avais pourtant bien précisé dans le message initial que c'était le code
d'erreur que je voulais squizer, pas le message .Lui aussi je le vire,
mais pour ça, je n'ai pas à poser la question sur la meilleure façon de
faire.
Le Sun, 26 Jul 2020 10:28:58 +0000, Nicolas George a écrit :
"commande 2>/dev/null" J'ai vu ça dans des scripts au boulot... Ce n'est probablement pas une bonne pratique, mais bon...
Non, ce n'est pas du tout pareil. Christophe parle du code de retour du programme (qu'on peut observer avec « echo $? » juste après), 2> concerne sa sortie d'erreur, c'est à dire une partie de ce qu'il affiche.
Merci d'avoir répondu à ma place. J'avais pourtant bien précisé dans le message initial que c'était le code d'erreur que je voulais squizer, pas le message .Lui aussi je le vire, mais pour ça, je n'ai pas à poser la question sur la meilleure façon de faire.
Jo Engo
Le Sun, 26 Jul 2020 16:50:04 +0000, Christophe PEREZ a écrit :
Hu ? Qu'est-ce ?
$ false;: $ echo $? 0 -- L'amour-propre est le plus grand de tous les flatteurs. -+- François de La Rochefoucauld (1613-1680), Maximes 2 -+-
Le Sun, 26 Jul 2020 16:50:04 +0000, Christophe PEREZ a écrit :
Hu ? Qu'est-ce ?
$ false;:
$ echo $?
0
--
L'amour-propre est le plus grand de tous les flatteurs.
-+- François de La Rochefoucauld (1613-1680), Maximes 2 -+-
Le Sun, 26 Jul 2020 16:50:04 +0000, Christophe PEREZ a écrit :
Hu ? Qu'est-ce ?
$ false;: $ echo $? 0 -- L'amour-propre est le plus grand de tous les flatteurs. -+- François de La Rochefoucauld (1613-1680), Maximes 2 -+-
Stéphane CARPENTIER
Le 26-07-2020, Christophe PEREZ a écrit :
Le Sat, 25 Jul 2020 22:50:12 +0000, Stéphane CARPENTIER a écrit :
Ben si, de faire un test sur l'existence du répertoire avant de lancer la commande. Si tu veux avoir ta commande dans le crontab, ça va être assez subtile de faire tout tenir sur une ligne. Mais si le but est de lancer un script à partir du crontab, c'est facile. L'avantage du script, c'est que tu peux le faire évoluer sans avoir à modifier ton crontab.
Ce n'est pas une crontab. C'est une "commande" dans la configuration de bacula. Ça revient un peu au même en terme d'usage, mais pas en terme de traitement.
OK, ça y ressemble beaucoup au niveau syntaxe.
considérant sans doute qu'il y a une erreur de configuration, ce qui ici n'est pas le cas juste pour l'absence d'un répertoire.
C'est pour ça que je te dis que tu peux tester l'existence du répertoire. Si, pour une raisons quelconque, bacula n'a plus les droits de lire le contenu du répertoire, tu auras aussi une erreur. Sauf que si tu supprimes le code d'erreur quoiqu'il arrive, tu assumeras que la sauvegarde échoue parce que ton répertoire n'existe pas. Et il ne sera jamais sauvegardé. Il y a plein d'autres raisons pour lesquelles la commande peut échouer. Par exemple, tu peux perdre le réseau. La seule que tu veux bypasser, c'est celle qui correspond au répertoire inexistant. C'est pour ça que je dis que tester la raisons avant de considérer que c'est ça me semble préférable.
Je me demande si j'ai bien fait de préciser pourquoi je demandais s'il y avait mieux que "commande || true" finalement :D.
Non, sinon, personne n'aurait su ce que veux dire mieux et tu aurais eu la question de toutes façons. -- Si vous avez du temps à perdre : https://scarpet42.gitlab.io
Le 26-07-2020, Christophe PEREZ <chris@novazur.fr> a écrit :
Le Sat, 25 Jul 2020 22:50:12 +0000, Stéphane CARPENTIER a écrit :
Ben si, de faire un test sur l'existence du répertoire avant de lancer
la commande. Si tu veux avoir ta commande dans le crontab, ça va être
assez subtile de faire tout tenir sur une ligne. Mais si le but est de
lancer un script à partir du crontab, c'est facile. L'avantage du
script, c'est que tu peux le faire évoluer sans avoir à modifier ton
crontab.
Ce n'est pas une crontab. C'est une "commande" dans la configuration de
bacula. Ça revient un peu au même en terme d'usage, mais pas en terme de
traitement.
OK, ça y ressemble beaucoup au niveau syntaxe.
considérant sans doute qu'il y a une erreur de configuration, ce qui
ici n'est pas le cas juste pour l'absence d'un répertoire.
C'est pour ça que je te dis que tu peux tester l'existence du
répertoire. Si, pour une raisons quelconque, bacula n'a plus les droits
de lire le contenu du répertoire, tu auras aussi une erreur. Sauf que si
tu supprimes le code d'erreur quoiqu'il arrive, tu assumeras que la
sauvegarde échoue parce que ton répertoire n'existe pas. Et il ne sera
jamais sauvegardé. Il y a plein d'autres raisons pour lesquelles la
commande peut échouer. Par exemple, tu peux perdre le réseau. La seule
que tu veux bypasser, c'est celle qui correspond au répertoire
inexistant. C'est pour ça que je dis que tester la raisons avant de
considérer que c'est ça me semble préférable.
Je me demande si j'ai bien fait de préciser pourquoi je demandais s'il y
avait mieux que "commande || true" finalement :D.
Non, sinon, personne n'aurait su ce que veux dire mieux et tu aurais eu
la question de toutes façons.
--
Si vous avez du temps à perdre :
https://scarpet42.gitlab.io
Le Sat, 25 Jul 2020 22:50:12 +0000, Stéphane CARPENTIER a écrit :
Ben si, de faire un test sur l'existence du répertoire avant de lancer la commande. Si tu veux avoir ta commande dans le crontab, ça va être assez subtile de faire tout tenir sur une ligne. Mais si le but est de lancer un script à partir du crontab, c'est facile. L'avantage du script, c'est que tu peux le faire évoluer sans avoir à modifier ton crontab.
Ce n'est pas une crontab. C'est une "commande" dans la configuration de bacula. Ça revient un peu au même en terme d'usage, mais pas en terme de traitement.
OK, ça y ressemble beaucoup au niveau syntaxe.
considérant sans doute qu'il y a une erreur de configuration, ce qui ici n'est pas le cas juste pour l'absence d'un répertoire.
C'est pour ça que je te dis que tu peux tester l'existence du répertoire. Si, pour une raisons quelconque, bacula n'a plus les droits de lire le contenu du répertoire, tu auras aussi une erreur. Sauf que si tu supprimes le code d'erreur quoiqu'il arrive, tu assumeras que la sauvegarde échoue parce que ton répertoire n'existe pas. Et il ne sera jamais sauvegardé. Il y a plein d'autres raisons pour lesquelles la commande peut échouer. Par exemple, tu peux perdre le réseau. La seule que tu veux bypasser, c'est celle qui correspond au répertoire inexistant. C'est pour ça que je dis que tester la raisons avant de considérer que c'est ça me semble préférable.
Je me demande si j'ai bien fait de préciser pourquoi je demandais s'il y avait mieux que "commande || true" finalement :D.
Non, sinon, personne n'aurait su ce que veux dire mieux et tu aurais eu la question de toutes façons. -- Si vous avez du temps à perdre : https://scarpet42.gitlab.io
Nicolas George
Christophe PEREZ , dans le message <rfkcpe$u9k$, a écrit :
Et non faire un test n'a pas d'intérêt, puisque ce n'est pas une condition au lancement de la sauvegarde ou pas. JE veux juste que si le répertoire existe, il soit sauvegardé
^^ Ta phrase contient un « si », c'est bien qu'un test est la solution adaptée. if [ -d $dir ]; then ls -d $dir; fi
Christophe PEREZ , dans le message <rfkcpe$u9k$3@serveur2.novazur.fr>, a
écrit :
Et non faire un test n'a pas d'intérêt, puisque ce n'est pas une
condition au lancement de la sauvegarde ou pas.
JE veux juste que si le répertoire existe, il soit sauvegardé
^^
Ta phrase contient un « si », c'est bien qu'un test est la solution
adaptée.
Christophe PEREZ , dans le message <rfkcpe$u9k$, a écrit :
Et non faire un test n'a pas d'intérêt, puisque ce n'est pas une condition au lancement de la sauvegarde ou pas. JE veux juste que si le répertoire existe, il soit sauvegardé
^^ Ta phrase contient un « si », c'est bien qu'un test est la solution adaptée. if [ -d $dir ]; then ls -d $dir; fi