[BASH] test si variable contient ./* [Résolu]

test si variable contient ./* [Résolu] [BASH] - Shell/Batch - Programmation

Marsh Posté le 07-01-2008 à 20:48:36    

Bonsoir , et oui encore moi lol !
je souhaite faire un test du genre :
if [ $chemin = ./* ]
then
...
else  
 
En fait , je souhaite tester si un chemin est absolu ou relatif , mais $chemin = ./* ne marche pas , et je n'arrive pas a trouver la solution... alors si quelqu'un pouvait m'aider , j'en serais très reconnaissant!
 
Merci encore ^^


Message édité par stany13 le 07-01-2008 à 21:44:46
Reply

Marsh Posté le 07-01-2008 à 20:48:36   

Reply

Marsh Posté le 07-01-2008 à 21:25:59    

Code :
  1. if [ $chemin = "`echo $chemin|grep ./`" ]
  2. then
  3. echo "ch relatif"
  4. else
  5. echo "ch abs"
  6. fi


---------------
"Software is like sex. It's better when it's free..."   Linus Torvalds
Reply

Marsh Posté le 07-01-2008 à 21:44:28    

Oh MERCI _mumu_ , sa marche niquel !!
Vraiment merci beaucoup  :bounce:

Reply

Marsh Posté le 08-01-2008 à 08:43:58    

if echo $chemin | grep -qF ./


c'est plus mieux.
 
Note quand même que la méthode est fausse : si un des répertoires dans ton chemin commence ou fini par un point, tu va en déduire que le chemin est relatif alors qu'il peut être absolu. Inversement un chemin peut être relatif sans contenir de "./" (par exemple toto/titi). En fait un chemin est absolu si et seulement si il commence par un / (enfin je pense ?). Donc :
 

if echo $chemin | grep -q ^/
then
    echo "absolu"
else
    echo "relatif"
fi

Reply

Marsh Posté le 08-01-2008 à 12:09:22    

Merci bien pour ces détails !  
J'avais pas vu la suptilité ^^

Reply

Marsh Posté le 08-01-2008 à 17:38:20    

Autre possibilité sous bash/ksh
 

if [[ "$chemin" = /* ]]
then  
    echo "absolu"  
else  
    echo "relatif"  
fi


 
Jean-Pierre

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed