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 01/03/2008, à 22:33

atlas2003

[script bash] Enlever un caractere d'une chaine si besoin

Bonjour a tous.
je suis en train de me faire un petit script bash et j'ai un probleme surement simple que je n'arrive pas a resoudre


mon script prend un parametre qui doit etre le chemin d'un repertoire.
Je teste que celui ci existe avec l'operateur "-d".
Cela marche tres bien. par contre le parametre peut terminer par un slash ou sans slash.
Exemple: /home/atlas ou /home/atlas/

Ensuite mon script contatène ce parametre avec un autre "string" qui represente un autre repertoire

Il faudrait que je puisse enlever le slash finale dans le cas ou l'utilisateur en met un pour eviter de me retrouver avec deux slash a la suite lors de la concaténation.

Quel est le moyen le plus simple?

Merci a vous tous.


Blabla autour d'Ubuntu > http://back2web.com/blabla/

Hors ligne

#2 Le 01/03/2008, à 23:27

WW

Re : [script bash] Enlever un caractere d'une chaine si besoin

Salut,

#!/bin/sh
read param
if [ `expr "$param" : '.*\(.\)'` = "/" ]; then #récupère le dernier caractère
        param=${param%/} #supprime le dernier /
fi
echo $param

Où $param représente ton paramètre.
Pour plus d'info ici.


Quand on sait c'est facile, mais qui n'a jamais été débutant.

Hors ligne

#3 Le 02/03/2008, à 00:11

abetsic

Re : [script bash] Enlever un caractere d'une chaine si besoin

Ceci dit, il me semble que ça marche quand même dans le cas ou il y a deux slashs consécutifs dans un chemin vers un repertoire ou un fichier.

Hors ligne

#4 Le 02/03/2008, à 10:31

Aurel34

Re : [script bash] Enlever un caractere d'une chaine si besoin

ushu@ushu-laptop:~$ test -d /home/ushu/Desktop/
ushu@ushu-laptop:~$ echo $?
0
ushu@ushu-laptop:~$ test -d /home/ushu//Desktop/
ushu@ushu-laptop:~$ echo $?
0

chez moi ça change rien...

Hors ligne

#5 Le 02/03/2008, à 15:46

atlas2003

Re : [script bash] Enlever un caractere d'une chaine si besoin

ha bah, si ca change rien dans ce cas smile
Mais merci pour le petit bout de code, je garde ca bien au chaud!


Blabla autour d'Ubuntu > http://back2web.com/blabla/

Hors ligne

#6 Le 08/04/2008, à 15:27

pyrofrag

Re : [script bash] Enlever un caractere d'une chaine si besoin

Merci bien pour ce code.

Les 2 / consécutifs ne changent rien mais pour un
if [ -d $param]; then ...

chez moi si mon dossier à un slash à la fin la boucle ne passe pas alors que si je n'en mets pas ça marche ...:rolleyes:

#7 Le 08/04/2008, à 16:51

Saito

Re : [script bash] Enlever un caractere d'une chaine si besoin

WW a écrit :

Salut,

#!/bin/sh
read param
if [ `expr "$param" : '.*\(.\)'` = "/" ]; then #récupère le dernier caractère
        param=${param%/} #supprime le dernier /
fi
echo $param

Il n'y a pas besoin de de vérifier la présence du «/» en dernière place:

sh-3.1$ a=/mnt/
sh-3.1$ echo ${a%/}
/mnt
sh-3.1$ a=/mnt 
sh-3.1$ echo ${a%/}
/mnt

Aku-Soku-Zan_Shinsengumi

Hors ligne