#1 Le 28/03/2017, à 20:45
- calixtus06
[ABANDONNE] if [ ! -z $(which bc) ]
Bonjour on m'a glissé ça dans un script . Quelqu'un peut il me la détailler ? merci d'avance les amis !!
Nico
Dernière modification par calixtus06 (Le 30/11/2018, à 06:28)
Hors ligne
#2 Le 28/03/2017, à 21:09
- Watael
Re : [ABANDONNE] if [ ! -z $(which bc) ]
salut,
help \[
help test
man which
apropos '^bc$'
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#3 Le 28/03/2017, à 22:54
- Hizoka
Re : [ABANDONNE] if [ ! -z $(which bc) ]
Salut, on peut simplifier par :
if [ $(which bc) ]
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#4 Le 28/03/2017, à 23:04
- Watael
Re : [ABANDONNE] if [ ! -z $(which bc) ]
oui, ou directement :
if which bc >/dev/null 2>&1
la substitution de commande fait taire which.
pour être clair, ça devrait être remplacer par
if test -n "$(which bc)"
! -z = -n
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#5 Le 29/03/2017, à 07:54
- Hizoka
Re : [ABANDONNE] if [ ! -z $(which bc) ]
Ouais mais je trouve ca moins lisible
calixtus06, as tu compris ?
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#6 Le 29/03/2017, à 08:48
- MicP
Re : [ABANDONNE] if [ ! -z $(which bc) ]
Bonjour
J'en profite pour poser une question au sujet des commandes test
Si if [ ! -z $(which bc) ] est dans un script qui sera exécuté par l'interpréteur de commandes bash
ne serait-ce pas plutôt la fonction (builtin) [ <=> test de l'interpréteur bash qui sera exécutée ?
Dans ce cas, il vaurait peut-être mieux chercher la documentation de la commande test dans la page man de bash ou/et dans la page man des builtins
plutôt que dans la page man de la commande /usr/bin/test
Ce n'est peut-être pas très important, mais je crois qu'il y a quelque petites différences entre ces deux test
(j'espère ne pas avoir été trop confus dans ce message car j'ai des petits soucis de santé en ce moment, mais c'est pas grave.)
Dernière modification par MicP (Le 29/03/2017, à 09:01)
Hors ligne
#7 Le 29/03/2017, à 08:55
- pingouinux
Re : [ABANDONNE] if [ ! -z $(which bc) ]
Bonjour MicP,
Pour voir quel test est exécuté
type test
Pour voir les différences
man test # commande
help test # builtin
Hors ligne
#8 Le 29/03/2017, à 09:11
- MicP
Re : [ABANDONNE] if [ ! -z $(which bc) ]
Merci pingouinux pour cette précision
Là aussi, c'est bien la commande help des builtins du bash qui est exécutée si l'interpréteur de commandes est bash,
ce qui est le cas de la plupart des Linux comme ceux basés sur debian.
D'aillleurs je crois qu'il y a aussi une autre commande test dans l'interpréteur sh
Mais je ne voudrais pas détourner le sujet de ce fil, c'était juste pour demander confirmation.
D'autant que j'avais mal rédigé mon précédent message : je suis effectivement un petit peu confus dans mes messages en ce moment.
Dernière modification par MicP (Le 29/03/2017, à 09:23)
Hors ligne
#9 Le 29/03/2017, à 23:46
- calixtus06
Re : [ABANDONNE] if [ ! -z $(which bc) ]
hello je vais reprendre ce que j'ai compris ou pas de vos messages:
[ blabla] <les crochets signifient "Évalue une expression conditionnelle." ...pouvez vous reformuler
which localise une commande < pourquoi des guillemets autour ?
if [ $(which bc) ] < si le contenu du chemin vers la calculatrice bc ????
if which bc >/dev/null 2>&1 < désolé si vous pouvez m'expliquer
if test -n "$(which bc)" < // //
Bon, pour créer une calculette, il faut que j'établisse un programme qui pose des conditions ( lesquelles) et que des "choses" soient testées ...???
Hors ligne
#10 Le 30/03/2017, à 00:57
- Watael
Re : [ABANDONNE] if [ ! -z $(which bc) ]
les crochets sont un alias de la commande test.
des guillemets, car si la substitution de commande ne retourne rien, c'est l'opérateur de test dont l'existence sera testée, ce qui retournera toujours VRAI.
le test et les crochets, sans opérateur, teste uniquement que quelquechose est retourné ou pas.
if teste le code de retour de la commande which.
pour ne pas "polluer" l'affichage, on redirige la sortie d'erreur vers la sortie standard, et la sortie standard vers /dev/null.
voir point n°2.
il y a pléthore d'exemple de calculette en shell sur internet.
c'est un sujet courant, une FAQ.
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne