[Shell] manipulation de chaine

[Résolu/Fermé]
Signaler
Messages postés
91
Date d'inscription
mardi 13 mai 2008
Statut
Membre
Dernière intervention
23 avril 2009
-
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
-
Bonjour,
j'aurai besoin de vos lumière sur un sujet que je ne métrise pas en shell.
Je récupère une chaine provenant d'une variable et je voudrait isoler une partie de celle-ci.

Explication :

var="home/to/titi.exe"

Résultat attendu :

titi.exe

besoin d'aide
Merci d'avance.

6 réponses

Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 887
Salut,
[tmpfs]$ var="home/to/titi.exe"
[tmpfs]$ echo ${var##*/}
titi.exe
[tmpfs]$
;-))
Messages postés
91
Date d'inscription
mardi 13 mai 2008
Statut
Membre
Dernière intervention
23 avril 2009
5
Encore un grand merci jipicy. Ca marche comme d'habitude!!

Juste un petit truc peut tu si tu as le temps m'expliquer le principe de ${var##*/}

^^
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 887 >
Messages postés
91
Date d'inscription
mardi 13 mai 2008
Statut
Membre
Dernière intervention
23 avril 2009

man bash -P 'less -p "^   Remplacement des paramètres"'
Messages postés
91
Date d'inscription
mardi 13 mai 2008
Statut
Membre
Dernière intervention
23 avril 2009
5 >
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020

Merci
Quel langage?
Messages postés
91
Date d'inscription
mardi 13 mai 2008
Statut
Membre
Dernière intervention
23 avril 2009
5
C'était du ksh [Shell] mais le problème est déjà résolu.

Merci quand même.

PS : Si tu as une autre solution c'est toujours bon à prendre.
Non, c'est la meilleure soluce
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 887
echo ${var//*\//}
Messages postés
91
Date d'inscription
mardi 13 mai 2008
Statut
Membre
Dernière intervention
23 avril 2009
5
Pour echo ${var//*\//} :

test.sh[250]: ${var//*\//}: bad substitution


Et pour echo ${var##*/} c'est bon ça marche très bien.



^^
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 562
Salut,

allez un peu d'économie ;-)
root@debian:~# var="home/to/titi.exe"
root@debian:~# echo $var
home/to/titi.exe
root@debian:~# echo ${var/*\/}
titi.exe

Messages postés
91
Date d'inscription
mardi 13 mai 2008
Statut
Membre
Dernière intervention
23 avril 2009
5
/home/to/ >var="home/to/titi.exe"
/home/to/ >echo $var
home/to/titi.exe
/home/to/ >echo ${var/*\/}
ksh: ${var/*\/}: bad substitution

Bizarre

^^
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 562 >
Messages postés
91
Date d'inscription
mardi 13 mai 2008
Statut
Membre
Dernière intervention
23 avril 2009

en fait le test est fait sur bash et pas sur ksh ;-)
Messages postés
91
Date d'inscription
mardi 13 mai 2008
Statut
Membre
Dernière intervention
23 avril 2009
5 >
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019

Okey merci désolé de ne pas avoir précisé mais echo ${var##*/} marche très bien en ksh.
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 562
Chez ça marche avec ksh
$ echo $SHELL
/bin/ksh
$ var="home/to/titi.exe"
$ echo $var
home/to/titi.exe
$ echo ${var/*\/}
titi.exe
$