#1 Le 22/08/2016, à 01:01
- Compte anonymisé
[resolu]bash : retourner une valeur booléenne
Bonjour,
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" :
[ -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, à 16:24)
#2 Le 22/08/2016, à 01: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, à 02:21)
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#3 Le 22/08/2016, à 02: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, à 02: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, à 02:28)
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#5 Le 22/08/2016, à 02:33
- Compte anonymisé
Re : [resolu]bash : retourner une valeur booléenne
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, à 02: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, à 02:51)
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#7 Le 22/08/2016, à 04: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, à 04:34)
#8 Le 22/08/2016, à 04: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, à 04:46)
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#9 Le 22/08/2016, à 05: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, à 05:14)
#10 Le 22/08/2016, à 05: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 !
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne