Dans une variable: Soustraire le dernier champ d'une arborescence [Résolu]

Messages postés
221
Date d'inscription
lundi 28 novembre 2011
Statut
Membre
Dernière intervention
8 octobre 2019
- - Dernière réponse : dubcek
Messages postés
17861
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
17 octobre 2019
- 26 sept. 2019 à 10:07
Bonjour,
Je suis actuellement confronté à un problème.
Pour bien me faire comprendre, je vais utiliser l'exemple suivant:
J'ai la variable $KA-EL
celle-ci peut contenir l'information suivante:
echo $KA-EL
/toto/position/espace/troc/profile
ou
/tata/bateau/vac/profile
ou
/tonton/batterie etc.../profile


Mon but est de travailler la variable $KA-EL afin que j'obienne dans une autre variable, les mêmes arborescences cités au dessus mais sans le "profile" à la fin.
Soit:
echo $JO-REL
/toto/position/espace/troc/
ou
/tata/bateau/vac/
ou
/tonton/batterie etc.../


Comment puis-je obtenir ce résultat ?
Est-ce quelqu'un aurait une idée ?
Merci :-)
Afficher la suite 

3 réponses

Meilleure réponse
Messages postés
1689
Date d'inscription
mardi 24 mai 2011
Statut
Membre
Dernière intervention
17 octobre 2019
248
1
Merci
Bonjour,

Avec quelque choses comme ca ?

:~$KA-EL="/toto/position/espace/troc/profile"
/* :~$ JO-REL = " '${KA-EL%p*}' " */ Attention j'ai modifier cette ligne
:~echo JO-REL

Tiens moi au jus

Dire « Merci » 1

Heureux de vous avoir aidé ! Vous nous appréciez ? Donnez votre avis sur nous ! Evaluez CommentCaMarche

CCM 63919 internautes nous ont dit merci ce mois-ci

Ka-El
Messages postés
221
Date d'inscription
lundi 28 novembre 2011
Statut
Membre
Dernière intervention
8 octobre 2019
-
Salut Tomsuper,
C'est nickel, c'est exactement ce que je recherchais !
Merci beaucoup pour ton aide :-)
Commenter la réponse de Tomsuper
Messages postés
37232
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
17 octobre 2019
4098
1
Merci
Salut,

man dirname
;-)

$ var="/toto/position/espace/troc/profile"

$ dirname "${var}"
/toto/position/espace/troc

$ var="/toto/position/profile"

$ dirname "${var}"
/toto/position

Dire « Merci » 1

Heureux de vous avoir aidé ! Vous nous appréciez ? Donnez votre avis sur nous ! Evaluez CommentCaMarche

CCM 63919 internautes nous ont dit merci ce mois-ci

Ka-El
Messages postés
221
Date d'inscription
lundi 28 novembre 2011
Statut
Membre
Dernière intervention
8 octobre 2019
-
Salut zipe31,
Tu vas bien ? ;-)
je savais que je pouvais compter sur toi ;-)
Avec cette solution et celle de Tomsuper, j'ai de quoi encore m'améliorer en shell.
Merci à vous deux !
Commenter la réponse de zipe31
Messages postés
17861
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
17 octobre 2019
4475
0
Merci
hello
n'importe quel nom
$ shopt -s extglob
$ var=/toto/position/espace/troc/profile
$ echo ${var%%+([[:alnum:]])}
/toto/position/espace/troc/
$
$ # pourquoi ceci ne fonctionne pas ?
$ echo ${var%!(/)}
/toto/position/espace/troc/profile
$ echo ${var%%!(/)}

$
Ka-El
Messages postés
221
Date d'inscription
lundi 28 novembre 2011
Statut
Membre
Dernière intervention
8 octobre 2019
-
Salut Dubcek,
J'espère que ce n'est pas à moi que tu poses cette problématique ? :-)
D'ailleurs, peux-tu m'indiquer à quoi sert cette commande ?:
$ shopt -s extglob


A+
zipe31
Messages postés
37232
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
17 octobre 2019
4098 > Ka-El
Messages postés
221
Date d'inscription
lundi 28 novembre 2011
Statut
Membre
Dernière intervention
8 octobre 2019
-
Salut,

Comme toujours, avoir le réflexe
man <commande>
ou
help <commande>
:
Extrait du man bash
shopt [-pqsu] [-o] [nom_opt ...]
Bascule la valeur des variables contrôlant le comportement optionnel du shell. Sans option, ou avec l'option -p, une liste de toutes les options configurables est affichée, avec l'indication de l'état de chacune d'entre elles. L'option -p réclame un affichage susceptible d'être réutilisé en entrée. Les autres options ont les significations suivantes :

-s Activer chaque nom_opt indiqué.
-u Désactiver chaque nom_opt indiqué.
-q Supprimer la sortie normale (mode silencieux). Le code de retour indique si l'option nom_opt est active ou non. Si plusieurs nom_opt sont fournis en argument de l'option -q, le code de retour est nul si tous les nom_opt sont actifs, et non-nul sinon.
-o Restreindre les valeurs des nom_opts à celles définies pour l'option -o de la commande set interne.

Si l'option -s ou -u est utilisé sans argument nom_opt, l'affichage est limité aux options qui sont actives ou inactives, respectivement. sauf indication contraire, les options shopt sont désactivés par défaut.

Le code de retour lors d'un affichage est zéro si tous les nom_opt sont actifs, non-nul sinon. Lors d'une activation ou inhibition, le code de retour est nul sauf si nom_opt n'est pas une option valide du shell.


$ help shopt
shopt: shopt [-pqsu] [-o] [nom_opt ...]
Active ou désactive des options du shell.

Change la valeur de chaque option du shell NOMOPT. S'il n'y a pas d'argument
à l'option, la commande liste toutes les options du shell en indiquant si
elles sont actives ou non.

Options :
-o restreint les NOMOPT à ceux définis pour être utilisés avec « set -o »
-p affiche chaque option du shell en indiquant son état
-q supprime l'affichage
-s active (set) chaque NOMOPT
-u désactive (unset) chaque NOMOPT

Code de retour :
Renvoie le code de succès si NOMOPT est active ; échec si une option non valable
est donnée ou si NOMOPT est inactive.
Ka-El
Messages postés
221
Date d'inscription
lundi 28 novembre 2011
Statut
Membre
Dernière intervention
8 octobre 2019
-
Ok merci :-)
Bonne journée
dubcek
Messages postés
17861
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
17 octobre 2019
4475 -
j'ai mis cette commande, car la man page de bash spécifie que:
Si l'option extglob du shell option est activée par la commande shopt

pour reconnaitre les :
?(liste-motif)     Correspond à zéro ou une occurrence des motifs indiqués 
*(liste-motif)        Correspond à zéro ou plusieurs occurrences des motifs indiqués  
+(liste-motif)        Correspond à une ou plusieurs occurrences des motifs indiqués   
@(liste-motif)        Correspond à une occurrence exactement des motifs indiqués 
!(liste-motif)        Correspond à tout sauf les motifs indiqués
Commenter la réponse de dubcek