----- Original Message -----
From: "Frédéric BOITEUX" <fboiteux@???>
To: <guilde@???>
Sent: Wednesday, September 13, 2006 9:05 AM
Subject: Re: bash et expression régulière
| Le mer 13 sep 2006 03:05:02 CEST, "anne aublanc"
| <anne.aublanc@???> a écrit :
|
| > bonjour,
| >
| > j'aimerais avoir cela ab\$cd\$e en partant de ab$cd$e dans une variable (titi)
| >
| > en ligne de cde :
| > user_shadow1='ab$cd$e'; echo $user_shadow1 | sed -e s/\\$/\\\\\$/g
| > ab\$cd\$e
| >
| > user_shadow1='ab$cd$e'; titi=`echo $user_shadow1 | sed -e s/\\$/\\\\\$/g`; echo $titi
| > ab$cd$e$
| >
| > Si vous pouvez m'expliquer le problème...
| >
| > j'aimerais beaucoup que titi = ab\$cd\$e
| >
| > merci
| > anne
| >
|
| Bonjour,
|
| extrait de la page de manuel :
|
| Quand l'ancienne forme de substitution avec les backquotes ` est
| utilisée, le caractère antislash garde sa signification littérale, sauf
| s'il est suivi de $, `, ou \. La première backquote non protégée par
| un antislash termine la substitution de commande. Quand on utilise la
| forme $(commande), tous les caractères entre parenthèses gardent leurs
| valeurs littérales. Aucun n'est traité spécialement.
|
| Donc ton expression s/\\$/\\\\\$/g n'est plus valable dans ce contexte. De toute façon, elle n'est pas très lisible !
|
| tu pourrais écrire :
|
| user_shadow1='ab$cd$e'; titi=`echo "$user_shadow1" | sed -e 's/\\$/\\\\$/g'` ; echo $titi
|
| [ une anti-quote de moins ]
| ou plus lisible :
|
| user_shadow1='ab$cd$e'; titi=$(echo $user_shadow1 | sed -e 's/\$/\\$/g') ; echo $titi
|
encore un souci avec le caractère / que je peux trouver...
user_shadow1='ab$cd$e/fg'; titi=$(echo $user_shadow1 | sed -e 's/\$/\\$/g' | sed -e 's/\//\\//g' ) ; echo $titi
=> sed: -e expression n°1, caractère 9: option inconnue pour `s
si idée...
anne