supprimer code erreur commande bash

Le
Christophe PEREZ
Bonjour,

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 :

bash -c 'ls -d /repertoire/qui/peut/ne/pas/exister || true'

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.
  • Partager ce contenu :
Vos réponses Page 1 / 4
Trier par : date / pertinence
Nicolas George
Le #26551849
Christophe PEREZ , dans le message écrit :
mais surtout, interrompt totalement l'ensemble de la sauvegarde.

Je trouve que c'est sur ce point qu'il vaudrait mieux réfléchir avant de
cacher l'erreur.
Christophe PEREZ
Le #26551871
Le Sat, 25 Jul 2020 08:36:00 +0000, Nicolas George a écrit :
Je trouve que c'est sur ce point qu'il vaudrait mieux réfléchir avant de
cacher l'erreur.

Et bien j'ai cherché, mais ça semble être le processus normal de bacula.
S'il y a une erreur en résultat d'une commande sur le "fileset", il ne
lance pas la sauvegarde.
J'utilise bacula depuis pas mal d'années. Tout fonctionne très bien. J'ai
juste installé une nouvelle machine, et oublié de créer ces répertoires
vides, et du coup, la sauvegarde a échoué. Je me suis dit qu'il serait
donc peut-être bien que je fasse en sorte que l'absence de ce répertoire
(et là seulement) ne provoque pas l'erreur qui empêche la sauvegarde.
Je ne vois pas trop le risque que je prends.
Stéphane CARPENTIER
Le #26551891
Le 25-07-2020, Christophe PEREZ
Le Sat, 25 Jul 2020 08:36:00 +0000, Nicolas George a écrit :
Je trouve que c'est sur ce point qu'il vaudrait mieux réfléchir avant de
cacher l'erreur.

Et bien j'ai cherché, mais ça semble être le processus normal de bacula.
S'il y a une erreur en résultat d'une commande sur le "fileset", il ne
lance pas la sauvegarde.
J'utilise bacula depuis pas mal d'années. Tout fonctionne très bien. J'ai
juste installé une nouvelle machine, et oublié de créer ces répertoires
vides, et du coup, la sauvegarde a échoué. Je me suis dit qu'il serait
donc peut-être bien que je fasse en sorte que l'absence de ce répertoire
(et là seulement) ne provoque pas l'erreur qui empêche la sauvegarde.
Je ne vois pas trop le risque que je prends.

Ça me semble plus propre de faire un test sur l'existence du répertoire
avant de lancer ta commande. Parce qu'une commande a plusieurs raisons
d'échouer. Et puis tu peux en profiter pour éviter de sauvegarder des
répertoires vides en t'assurant que si le répertoire existe, il contient
des fichiers.
--
Si vous avez du temps à perdre :
https://scarpet42.gitlab.io
Christophe PEREZ
Le #26551894
Le Sat, 25 Jul 2020 21:58:01 +0000, Stéphane CARPENTIER a écrit :
Ça me semble plus propre de faire un test sur l'existence du répertoire
avant de lancer ta commande. Parce qu'une commande a plusieurs raisons
d'échouer. Et puis tu peux en profiter pour éviter de sauvegarder des
répertoires vides en t'assurant que si le répertoire existe, il contient
des fichiers.

Certes. Je vais réfléchir à la façon de mettre ça en place.
Mais sinon, pour répondre à ma question initiale, tu ne vois pas mieux
que le "|| true" ?
Stéphane CARPENTIER
Le #26551895
Le 25-07-2020, Christophe PEREZ
Le Sat, 25 Jul 2020 21:58:01 +0000, Stéphane CARPENTIER a écrit :
Ça me semble plus propre de faire un test sur l'existence du répertoire
avant de lancer ta commande. Parce qu'une commande a plusieurs raisons
d'échouer. Et puis tu peux en profiter pour éviter de sauvegarder des
répertoires vides en t'assurant que si le répertoire existe, il contient
des fichiers.

Certes. Je vais réfléchir à la façon de mettre ça en place.
Mais sinon, pour répondre à ma question initiale, tu ne vois pas mieux
que le "|| true" ?

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.
--
Si vous avez du temps à perdre :
https://scarpet42.gitlab.io
pehache
Le #26551901
Le 25/07/2020 à 23:58, Stéphane CARPENTIER a écrit :
Le 25-07-2020, Christophe PEREZ
Le Sat, 25 Jul 2020 08:36:00 +0000, Nicolas George a écrit :
Je trouve que c'est sur ce point qu'il vaudrait mieux réfléchir avant de
cacher l'erreur.

Et bien j'ai cherché, mais ça semble être le processus normal de bacula.
S'il y a une erreur en résultat d'une commande sur le "fileset", il ne
lance pas la sauvegarde.
J'utilise bacula depuis pas mal d'années. Tout fonctionne très bien. J'ai
juste installé une nouvelle machine, et oublié de créer ces répertoires
vides, et du coup, la sauvegarde a échoué. Je me suis dit qu'il serait
donc peut-être bien que je fasse en sorte que l'absence de ce répertoire
(et là seulement) ne provoque pas l'erreur qui empêche la sauvegarde.
Je ne vois pas trop le risque que je prends.

Ça me semble plus propre de faire un test sur l'existence du répertoire
avant de lancer ta commande.

Ca ne va pas forcément résoudre le problème, car
[ -d dossier ] && ls dossier
va renvoyer une erreur si le test échoue.
--
"...sois ouvert aux idées des autres pour peu qu'elles aillent dans le
même sens que les tiennes." (ST sur fr.bio.medecine)
"Je suis ATARIste, et j'ai bien l'intention que l'on me respecte ici."
(FLC sur fr.comp.sys.atari)
Marc SCHAEFER
Le #26551908
Stéphane CARPENTIER
Ben si, de faire un test sur l'existence du répertoire avant de lancer
la commande.

non atomique, faire plutôt `cd répertoire && suite', dans ce cas.
Marc SCHAEFER
Le #26551907
Stéphane CARPENTIER
Ben si, de faire un test sur l'existence du répertoire avant de lancer
la commande.

non atomique, faire plutôt `cd répertoire && suite', dans ce cas.
ou if cd répertoire; then
else; fi
si l'on veut éviter l'abord dû au set -e
Marc SCHAEFER
Le #26551906
Stéphane CARPENTIER
Ben si, de faire un test sur l'existence du répertoire avant de lancer
la commande.

Non atomique, faire plutôt `cd répertoire && suite', dans ce cas.
ou if cd répertoire; then
else; fi
si l'on veut éviter l'abort dû au set -e
Jo Engo
Le #26551915
Le Sun, 26 Jul 2020 08:11:55 +0200, pehache a écrit :
[ -d dossier ] && ls dossier
va renvoyer une erreur si le test échoue.

if [ -d dossier ] ; then ls dossier ; fi
ne renverra pas d'erreur intempestive.

--
Travailler donc pour la gloire, et qu'un solide gain
Ne soit jamais l'objet d'un illustre écrivain.
-+- Nicolas Boileau, Art poétique -+-
Poster une réponse
Anonyme