Test sur boolean et autre condtion
Fermé
Swiss Knight
Messages postés
1956
Date d'inscription
samedi 22 novembre 2008
Statut
Membre
Dernière intervention
27 juillet 2016
-
Modifié par Swiss Knight le 26/01/2014 à 18:09
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 - 28 janv. 2014 à 09:02
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 - 28 janv. 2014 à 09:02
A voir également:
- Shell boolean
- Classic shell windows 10 français - Télécharger - Personnalisation
- Efi shell - Forum Windows 10
- Efi shell version 2.31 - Forum Programmation
- Secure shell - Télécharger - Divers Web & Internet
- Retour à la ligne shell ✓ - Forum Shell
3 réponses
Swiss Knight
Messages postés
1956
Date d'inscription
samedi 22 novembre 2008
Statut
Membre
Dernière intervention
27 juillet 2016
110
26 janv. 2014 à 18:30
26 janv. 2014 à 18:30
Ne me demandez pas pourquoi mais à force d'essais, j'ai trouvé ceci qui a l'air de fonctionner :
Apparemment les 1 et 0 ça marche pas, il faut écrire "true" et "false" en toutes lettres. Chose que je trouve un peu absurde, mais bon, c'est comme ça. Je pense que c'est dû au fait que true et false sont des commandes.
Ah, et puis au passage, pour éviter de faire tourner le 'case' sur un chemin qui n'existe pas, j'ai ficelé ça comme ça ;
Bonne soirée ! :)
#!/bin/bash chemin="Desktop" case "${chemin}" in /*) absolute=true ;; *) absolute=false ;; esac if ${absolute} && [ -d "${chemin}" ]; then echo "Le chemin est absolu."; elif ! ${absolute} && [ -d "${chemin}" ]; then echo "Le chemin est relatif."; else echo "${chemin} n'est pas un chemin valable !"; fi
Apparemment les 1 et 0 ça marche pas, il faut écrire "true" et "false" en toutes lettres. Chose que je trouve un peu absurde, mais bon, c'est comme ça. Je pense que c'est dû au fait que true et false sont des commandes.
Ah, et puis au passage, pour éviter de faire tourner le 'case' sur un chemin qui n'existe pas, j'ai ficelé ça comme ça ;
#!/bin/bash chemin="Desktop" if [ -d "${chemin}" ]; then case "${chemin}" in /*) absolute=true ;; *) absolute=false ;; esac if ${absolute}; then echo "Le chemin ${chemin} est absolu." elif ! ${absolute}; then echo "Le chemin ${chemin} est relatif." fi else echo "No such directory : ${chemin}." exit 0 fi
Bonne soirée ! :)
Utilisateur anonyme
26 janv. 2014 à 21:13
26 janv. 2014 à 21:13
salut,
casen'est pas indispensable:
if [[ -d "$chemin" && $chemin == /* ]]
dubcek
Messages postés
18718
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
22 mars 2024
5 615
28 janv. 2014 à 09:02
28 janv. 2014 à 09:02
hello
dans ce test
dans ce test
if [[ -d "${chemin}" && ${absolute} ]];$absolute est traité comme une chaine de caractère et pas comme 1 ou zéro numérique, donc si la chaine n'est pas vide le test sera vrai
$ chemin=~/Desktop; absolute=1
$ [[ -d "${chemin}" && ${absolute} ]] && echo vrai
vrai
$ chemin=~/Desktop; absolute=0
$ [[ -d "${chemin}" && ${absolute} ]] && echo vrai
vrai
$ chemin=~/Desktop; absolute=""
$ [[ -d "${chemin}" && ${absolute} ]] && echo vrai
$