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 22/08/2016, à 02:01

Compte anonymisé

[resolu]bash : retourner une valeur booléenne

Bonjour,

http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html a écrit :

Table 7-2. Combining expressions
[ ( EXPR ) ]    Returns the value of EXPR. This may be used to override the normal precedence of operators.

On veut afficher la valeur booléene de " -d Mon_dossier"  :

http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html a écrit :

[ -d FILE ]    True if FILE exists and is a directory.

Alors pourquoi ça donne :

j-user@Lubuntu-16:~$ [ ( [ -d Mon_dossier ] ) ]
bash: erreur de syntaxe près du symbole inattendu « [ »
j-user@Lubuntu-16:~$ 

?

Dernière modification par Compte anonymisé (Le 22/08/2016, à 17:24)

#2 Le 22/08/2016, à 02:42

Watael

Re : [resolu]bash : retourner une valeur booléenne

salut,

mais pourquoi est-ce que tu mélanges les deux ?
on peut aussi se demander pourquoi ils ont mis des parenthèses ?

peu importe, c'est :

test -d tonDossier

les crochets sont un alias pour la commande test; moi, je préfère test.
il est ainsi plus clair qu'il s'agit d'une commande.

Dernière modification par Watael (Le 22/08/2016, à 03:21)


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#3 Le 22/08/2016, à 03:12

Compte anonymisé

Re : [resolu]bash : retourner une valeur booléenne

ta commande ne renvoi rien, comment lui faire afficher la valeur de l' expression ?

#4 Le 22/08/2016, à 03:20

Watael

Re : [resolu]bash : retourner une valeur booléenne

le code de retour de toutes les commandes (internes et externes) est contenu dans la variable $?

mais en as-tu vraiment besoin ?
il existe des ET (&&) et OU (||) logiques, qui permettent d'enchaîner des commandes en fonction du code retour de la précédente.
la commande if...;then...(;elif...; then...);else...;fi fait ça aussi, mais permet, en plus, d'enchaîner des blocs de commandes.

Dernière modification par Watael (Le 22/08/2016, à 03:28)


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#5 Le 22/08/2016, à 03:33

Compte anonymisé

Re : [resolu]bash : retourner une valeur booléenne

Watael a écrit :

le code de retour de toutes les commandes (internes et externes) est contenu dans la variable $?

Je n'ai pas compris .

Le but est simplement d'afficher la valeur boléenne de l'expression .
ex:

j-user@Lubuntu-16:~$ test -d tonDossier
false
j-user@Lubuntu-16:~$

#6 Le 22/08/2016, à 03:46

Watael

Re : [resolu]bash : retourner une valeur booléenne

test -d monDossier
retTestDir=$?
((retTestDir)) && echo "faux" || echo "vrai" 

c'est vrai que les codes de retour ne sont pas toujours binaires.

les parenthèses sont une évaluation arithmétique, elles retournent "vrai" si le résultat de l'évaluation est supérieur ou égal à 1; et donc affichent "faux" car le retour est égal à 1.

c'est équivalent à

if test $retTestDir -gt 0; then echo "faux"; else echo "vrai"; fi

et je dis que tu n'en as pas forcément besoin, car

if test -d tonDossier; then echo vrai; else echo faux; fi
faux

Dernière modification par Watael (Le 22/08/2016, à 03:51)


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#7 Le 22/08/2016, à 05:34

Compte anonymisé

Re : [resolu]bash : retourner une valeur booléenne

On peut pas y arriver sans une condition if,then ?
Il n'existe pas de prog spécialement concu pour renvoyer une valeur boléenne ?
C'est un peu lourd .

J'apprécie neanmoins tes explications .

Dernière modification par Compte anonymisé (Le 22/08/2016, à 05:34)

#8 Le 22/08/2016, à 05:45

Watael

Re : [resolu]bash : retourner une valeur booléenne

si, comme je te l'ai montré :

test -d monDossier && echo vrai || echo faux
faux

mais pourquoi veux-tu utiliser vrai/faux ?

Dernière modification par Watael (Le 22/08/2016, à 05:46)


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#9 Le 22/08/2016, à 06:05

Compte anonymisé

Re : [resolu]bash : retourner une valeur booléenne

Merci !

Les boolean me sont utiles pour les logs d'erreurs .

Dernière modification par Compte anonymisé (Le 22/08/2016, à 06:14)

#10 Le 22/08/2016, à 06:31

Watael

Re : [resolu]bash : retourner une valeur booléenne

mais si ce sont des journaux qui n'enregistrent que les erreurs...il n'est pas nécessaire de le préciser à chaque ligne ! wink


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne