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 03/02/2012, à 04:35

ubuntuforce

syntaxe #, ##, %, %% avec l'opérateur ${} [résolu]

Salut les bashelier,
Après l'activation de l'option extglob avec:

shopt -s extglob

Je n'arrive pas a extraire la chaine souhaiter et mon terminal ne semble pas famillier avec la syntax que j'ai appris dans mon book sur le bash c.a.d:

var=/home/nom/fichier.ext
# ou echo ${var#motif} devrai retourner le plus long suffixe ou retirer le plus court prefixe jusqu'au motif
# ou echo ${var##motif} devrai retourner le plus court suffixe ou retirer le plus long prefixe jusqu'au motif
# ou echo ${var%motif} devrai retourner le plus long prefixe ou retirer le plus court suffixe jusqu'au motif
# ou echo ${var%%motif} devrai retourner le plus court  prefixe ou retirer le plus long suffixe jusqu'au motif

Mais ca ne marche pas du tout comme expliquer dans le book...
Si quelqu'un a des infos sur cette syntaxe merci de poster.

Dernière modification par ubuntuforce (Le 09/02/2012, à 17:06)


Rendez-vous sur mon site présentant mes créations open-source: http://www.open-source-projects.net/
Rendez-vous sur mon site dédier a mes créations d'imagerie 3D: http://www.3dreaming-imaging.net/
Testez pendant une semaine l'éditeur avec terminaux intégrées http://www.open-source-projects.net/it-edit/it-edit Vous l'adopterai sûrement !

Hors ligne

#2 Le 03/02/2012, à 06:26

pingouinux

Re : syntaxe #, ##, %, %% avec l'opérateur ${} [résolu]

Bonjour,

# echo ${var#motif} retourne $var dont le plus court préfixe motif a été retiré
# echo ${var##motif} retourne $var dont le plus long préfixe motif a été retiré
# echo ${var%motif} retourne $var dont le plus court suffixe motif a été retiré
# echo ${var%%motif} retourne $var dont le plus long suffixe motif a été retiré

Par exemple, pour retirer le plus court préfixe jusqu'à motif :

echo ${var#*motif}

et pour retirer le plus court suffixe commençant à motif :

echo ${var%motif*}

Hors ligne

#3 Le 03/02/2012, à 08:53

Watael

Re : syntaxe #, ##, %, %% avec l'opérateur ${} [résolu]

salut,

et ce n'est pas lié à extglob, c'est le Développement des Paramètres normal.


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#4 Le 03/02/2012, à 16:17

aduxas

Re : syntaxe #, ##, %, %% avec l'opérateur ${} [résolu]

Pour ton example, essaye

echo ${var#*/}
echo ${var##*/}

et

echo ${var%/*}
echo ${var%%/*}

Hors ligne

#5 Le 08/02/2012, à 18:03

ubuntuforce

Re : syntaxe #, ##, %, %% avec l'opérateur ${} [résolu]

Merci pour vos réponses mais il me semble l'égitime que: le motiv '.ext' a extraire

var=/home/nom/fichier.ext
echo ${var%'.ext'}
# devrai rertourner /home/noçm/fichier

d'après ma doc mais apparement ,il faut utilser un des 2 quantificateurs: * et ? habilementdonc
J'arriverai surement en pratiquent l'extraction de chaine comme entrainement a cerner la logique de cette forme d'écriture.


Rendez-vous sur mon site présentant mes créations open-source: http://www.open-source-projects.net/
Rendez-vous sur mon site dédier a mes créations d'imagerie 3D: http://www.3dreaming-imaging.net/
Testez pendant une semaine l'éditeur avec terminaux intégrées http://www.open-source-projects.net/it-edit/it-edit Vous l'adopterai sûrement !

Hors ligne

#6 Le 09/02/2012, à 11:50

Postmortem

Re : syntaxe #, ##, %, %% avec l'opérateur ${} [résolu]

Salut,
Quelques exemples t'aideront peut-être :

$ ma_var=aaa.bbb.ccc.ddd.eee
$ echo "${ma_var#*.}"
bbb.ccc.ddd.eee

$ echo "${ma_var##*.}"
eee

$ echo "${ma_var%.*}"
aaa.bbb.ccc.ddd

$ echo "${ma_var%%.*}"
aaa
$ var=/home/nom/fichier.ext
$ echo "${var%.ext}"
/home/nom/fichier

$ echo "${var%'.ext'}"
/home/nom/fichier

On est pas obligé d'utilisé * ou ? dans le motif.


Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »

Hors ligne

#7 Le 09/02/2012, à 15:06

ubuntuforce

Re : syntaxe #, ##, %, %% avec l'opérateur ${} [résolu]

Merci beaucoup pour les exemples d'utilisation et d'avoir contribuer a ma connaissances du bash,
j'ai réussi les opération que voulais effectuer dans mon script sur la variable

var=/home/nom/fichier.ext.abc.cde
echo "${var#'.ext'}"
/home/nom/fichier.ext.abc.cde
echo "${var#.ext}"
/home/nom/fichier.ext.abc.cde
echo "${var#*.ext}"
.abc.cde

Je ne veux pas te contredire car tu a raison en ce qui concerne l'utilisation des opérateurs * et ? mais je recommanderai leurs utilisation en développement car comme montrer plus haut en cas d'erreur l'interpréteur renvoie le contenus entier de la variable au lieu d'un message d'erreur ce qui n'est pas pratique pour apprendre la syntaxe quand on ne sait pas ce qui ne va pas dans la syntaxe.


Rendez-vous sur mon site présentant mes créations open-source: http://www.open-source-projects.net/
Rendez-vous sur mon site dédier a mes créations d'imagerie 3D: http://www.3dreaming-imaging.net/
Testez pendant une semaine l'éditeur avec terminaux intégrées http://www.open-source-projects.net/it-edit/it-edit Vous l'adopterai sûrement !

Hors ligne

#8 Le 09/02/2012, à 21:57

aduxas

Re : syntaxe #, ##, %, %% avec l'opérateur ${} [résolu]

Il ne faut pas oublier que le motif doit correspondre soit au debut soit a la fin du parametre.  S'il ne se trouve qu'au milieu, il n'a aucun effet, et le seul moyen est de rajouter * ou ?.

Hors ligne