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 18755 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 14 novembre 2024 - 28 janv. 2014 à 09:02
dubcek Messages postés 18755 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 14 novembre 2024 - 28 janv. 2014 à 09:02
A voir également:
- Shell boolean
- Classic shell windows 11 - Télécharger - Personnalisation
- Shell startup windows 10 - Guide
- Efi shell version 2.31 - Forum Programmation
- Ssh secure shell download - Télécharger - Divers Web & Internet
- Startup.nsh shell ✓ - Forum Windows 10
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
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 620
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
$