#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
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
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