Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[shell] : (deux points)

8 réponses
Avatar
Ph. Ivaldi
Re,

Je ne comprends pas le sens des deux points (:) dans cette ligne:
$SYSLOG && [ ! -x $LOGGER ] && SYSLOG=false || :

Une bonne âme pour m'expliquer ?

Merci,
--
Philippe Ivaldi.
http://www.piprime.fr/

8 réponses

Avatar
Thierry B
On 2009-10-09, Ph Ivaldi wrote:

Je ne comprends pas le sens des deux points (:) dans cette ligne:
$SYSLOG && [ ! -x $LOGGER ] && SYSLOGúlse || :

Une bonne âme pour m'expliquer ?



La commande ':' est équivalante à 'true'


NAME
true - do nothing, successfully

SYNOPSIS
true [ignored command line arguments]
true OPTION

DESCRIPTION
Exit with a status code indicating success.


--
<JX> je vais boire une adelscott
<CleeK> jx : pareil pour moi
<JX> et comme il ne faut JAMAIS boire le ventre vide
<JX> je vais manger une Guinness avec
Avatar
Ph. Ivaldi
Le 09 octobre 2009, Thierry B écrivit :

La commande ':' est équivalante à 'true'



Merci
Faut quand même être sacrément feignasse pour penser à écrire : à la
place de true... et le faire c'est encore pire :-)
Avatar
Thierry B
On 2009-10-09, Ph Ivaldi wrote:

Je ne comprends pas le sens des deux points (:) dans cette ligne:
$SYSLOG && [ ! -x $LOGGER ] && SYSLOGúlse || :

Une bonne âme pour m'expliquer ?



La commande ':' est équivalente à 'true'


NAME
true - do nothing, successfully

SYNOPSIS
true [ignored command line arguments]
true OPTION

DESCRIPTION
Exit with a status code indicating success.


--
<JX> je vais boire une adelscott
<CleeK> jx : pareil pour moi
<JX> et comme il ne faut JAMAIS boire le ventre vide
<JX> je vais manger une Guinness avec
Avatar
Stephane CHAZELAS
2009-10-09, 17:28(+02), Ph Ivaldi:
Le 09 octobre 2009, Thierry B écrivit :

La commande ':' est équivalante à 'true'



Merci
Faut quand même être sacrément feignasse pour penser à écrire : à la
place de true... et le faire c'est encore pire :-)



":" est plus portable que "true". Il y a encore des shells qui
n'ont pas de "true" builtin (auquel cas on execute /bin/true
s'il existe).

x && y || :

Fait en sorte que le code retour final est 0, c'est a dire (pour
le cas du set -u), une failure de y n'est pas consideree comme
un probleme.

--
Stéphane
Avatar
Ph. Ivaldi
Le 09 octobre 2009, Stephane CHAZELAS écrivit :

":" est plus portable que "true".



C'est la genre de choses qui me dépassent; comment puis-je savoir cela ?

x && y || :
Fait en sorte que le code retour final est 0, c'est a dire (pour
le cas du set -u), une failure de y n'est pas consideree comme
un probleme.



Oui, j'avais déjà utilisé... c'était le : qui me posait problème.
Merci quand même, ça m'a permit de réviser le "set -u" le
${var:-default} etc que je n'utilise... pas vraiment souvent.
--
Philippe Ivaldi.
http://www.piprime.fr/
Avatar
Demelier David
On Fri, 09 Oct 2009 18:34:59 +0200, Ph Ivaldi wrote:
Le 09 octobre 2009, Stephane CHAZELAS écrivit :

":" est plus portable que "true".



C'est la genre de choses qui me dépassent; comment puis-je savoir cela ?




Parce que true est soit un binaire /bin/true, soit un builtin du shell que
t'utilises. Mais le problème c'est que tous les shells n'ont pas encore cette
commande true intégrées dans leur shell mais ':' oui.


x && y || :
Fait en sorte que le code retour final est 0, c'est a dire (pour
le cas du set -u), une failure de y n'est pas consideree comme
un probleme.



Oui, j'avais déjà utilisé... c'était le : qui me posait problème.
Merci quand même, ça m'a permit de réviser le "set -u" le
${var:-default} etc que je n'utilise... pas vraiment souvent.




--
Demelier David

() ascii ribbon campaign - against html e-mail
/ www.asciiribbon.org - against proprietary attachments

--- news://freenews.netfront.net/ - complaints: ---
Avatar
Ph. Ivaldi
Le 07 mars 2010, Demelier David écrivit :

On Fri, 09 Oct 2009 18:34:59 +0200, Ph Ivaldi wrote:
Le 09 octobre 2009, Stephane CHAZELAS écrivit :
":" est plus portable que "true".


C'est la genre de choses qui me dépassent; comment puis-je savoir cela ?


Parce que true est soit un binaire /bin/true, soit un builtin du shell que
t'utilises. Mais le problème c'est que tous les shells n'ont pas encore cette
commande true intégrées dans leur shell mais ':' oui.



Merci pour cette réponse mais elle me satisfait à moitié.
Quelle est l'intérêt d'implémenter : pour true sans implémenter true ;
là est la question, en fait…
--
Philippe Ivaldi.
http://www.piprime.fr/
Avatar
Stephane CHAZELAS
2010-03-07, 18:34(+01), Ph Ivaldi:
Le 07 mars 2010, Demelier David écrivit :

On Fri, 09 Oct 2009 18:34:59 +0200, Ph Ivaldi wrote:
Le 09 octobre 2009, Stephane CHAZELAS écrivit :
":" est plus portable que "true".


C'est la genre de choses qui me dépassent; comment puis-je savoir cela ?


Parce que true est soit un binaire /bin/true, soit un builtin du shell que
t'utilises. Mais le problème c'est que tous les shells n'ont pas encore cette
commande true intégrées dans leur shell mais ':' oui.



Merci pour cette réponse mais elle me satisfait à moitié.
Quelle est l'intérêt d'implémenter : pour true sans implémenter true ;
là est la question, en fait…



: a son origine dans les shells pre-Bourne (versions d'Unix
avant V7) et se retrouve dans tous les shells qui en derivent
comme csh ou le Bourne shell et ses descendants.

Plutot qu'une commande qui renvoie true, c'etait une commande qui
ne faisait rien (no-op), utilisee par example par les
commentaires (# n'a ete introduit que plus tard, par csh puis a
ete rajouté au Bourne shell bien apres sa creation).

--
Stéphane