Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 28/03/2017, à 21: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, à 07:28)

Hors ligne

#2 Le 28/03/2017, à 22: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, à 23: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

En ligne

#4 Le 29/03/2017, à 00: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, à 08:54

Hizoka

Re : [ABANDONNE] if [ ! -z $(which bc) ]

Ouais mais je trouve ca moins lisible tongue

calixtus06, as tu compris ?


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

En ligne

#6 Le 29/03/2017, à 09: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, à 10:01)

Hors ligne

#7 Le 29/03/2017, à 09: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, à 10:11

MicP

Re : [ABANDONNE] if [ ! -z $(which bc) ]

Merci pingouinux pour cette précision smile

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, à 10:23)

Hors ligne

#9 Le 30/03/2017, à 00: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, à 01: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