OVH Cloud OVH Cloud

supprimer code erreur commande bash

40 réponses
Avatar
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.

10 réponses

1 2 3 4
Avatar
Marc SCHAEFER
Benoit Izac wrote:
Pas vraiment à part que « : » est toujours un builtin du shell alors que

Un des trucs qui m'a fait aimer UNIX à l'origine c'est:
:~$ ls -la /usr/bin/[
-rwxr-xr-x 1 root root 39464 Mar 14 2015 /usr/bin/[
(aucun rapport direct).
Avatar
Jo Engo
Le Sun, 26 Jul 2020 22:27:43 +0200, Benoit Izac a écrit :
(mais je pense que tous les shells actuels l'ont en builtin).

(bash) $ which true
/bin/true
--
Je dis des choses tellement intelligentes,
que le plus souvent je ne comprends pas ce que je dis.
-+- Devise Shadok -+-
Avatar
David Larochette
Le 27/07/2020 à 08:00, Jo Engo a écrit :
Le Sun, 26 Jul 2020 22:27:43 +0200, Benoit Izac a écrit :
(mais je pense que tous les shells actuels l'ont en builtin).

(bash) $ which true
/bin/true

L'existence d'une implémentation par défaut n'empêche pas que la
commande soit un built-in dans la plupart des shells.
Avatar
Jo Engo
Le Mon, 27 Jul 2020 08:39:48 +0200, David Larochette a écrit :
(bash) $ which true /bin/true

L'existence d'une implémentation par défaut n'empêche pas que la
commande soit un built-in dans la plupart des shells.

Je cherche un exemple pour le prouver, mais une commande qui est /built-
in/ et qui existe par ailleurs quelque part dans le path, which command
renvoie vide. true est une commande qui se trouve dans /bin. Elle n'est
pas /built-in/.
--
si je met [DAIKATANA) mon message est refuse.
-+- watcher75 in Guide du Petit Joueur: Daikatahaha -+-
Avatar
David Larochette
Le 27/07/2020 à 08:47, Jo Engo a écrit :
Le Mon, 27 Jul 2020 08:39:48 +0200, David Larochette a écrit :
(bash) $ which true /bin/true

L'existence d'une implémentation par défaut n'empêche pas que la
commande soit un built-in dans la plupart des shells.

Je cherche un exemple pour le prouver, mais une commande qui est /built-
in/ et qui existe par ailleurs quelque part dans le path, which command
renvoie vide. true est une commande qui se trouve dans /bin. Elle n'est
pas /built-in/.

Posix ne spécifie pas quelle commande peut ou doit être built-in. En
conséquence, toutes les commandes spécifiées comme «obligatoires»
doivent avoir une implémentation par défaut afin que les shells qui
n'ont pas leur propre implémentation puissent exécuter les scripts Posix
sans problème.
Avatar
Nicolas George
Jo Engo , dans le message <rfltaj$cb6$, a écrit :
Je cherche un exemple pour le prouver

Compare :
strace -e clone bash -c 'true; false; ls>/dev/null; :'
et :
strace -e clone bash -c '/bin/true; /bin/false; ls>/dev/null; :'
(Le « ; : » final interdit à bash d'exécuter la dernière commande
directement, façon récursivité terminale.)
Avatar
Jo Engo
.Le Mon, 27 Jul 2020 09:00:13 +0000, Nicolas George a écrit :
Jo Engo , dans le message <rfltaj$cb6$, a écrit :
Je cherche un exemple pour le prouver

Compare :
strace -e clone bash -c 'true; false; ls>/dev/null; :'
et :
strace -e clone bash -c '/bin/true; /bin/false; ls>/dev/null; :'
(Le « ; : » final interdit à bash d'exécuter la dernière commande
directement, façon récursivité terminale.)

Bref, c'est juste le contraire de ce que je croyais. Bien joué. Et wich
ne fonctionne pas comme je l'imaginais.
--
09:28 comment on configure Apache pour pouvoir s'y connecter en FTP ?
Avatar
Marc SCHAEFER
Jo Engo wrote:
Bref, c'est juste le contraire de ce que je croyais. Bien joué. Et wich
ne fonctionne pas comme je l'imaginais.

:~$ type [
[ is a shell builtin
:~$ which [
/usr/bin/[
:~$ type :
: is a shell builtin
:~$ which :
Comment!! pas de /usr/bin/: ?? :->
Avatar
Benoit Izac
Bonjour,
Le 27/07/2020 à 08:00, Jo Engo a écrit dans le message
<rflqij$cb6$ :
(mais je pense que tous les shells actuels l'ont en builtin).

(bash) $ which true
/bin/true

Essaye plutôt « command -V true ».
--
Benoit Izac
Avatar
secte monarch
Le 28/07/20 à 07:27, ptilou a écrit :
Le samedi 25 juillet 2020 02:08:13 UTC+2, Christophe PEREZ a écrit :
Bonjour,
Y a-t-il mieux, pour supprimer le code d'erreur (pas le message) d'une
commande bash que "commande || trou" ?

voila le PB est résolue !

y'a une fin à tout.
mais on peut résoudre et simplifier, faire encore mieux.
--
1 2 3 4