Tout vient de l'évaluation réalisé par le <'> (le quote) qui effectivement semble ne pas réagir de la façon attendue (ou du moins, pas la façon dont on aurait espéré ou imaginé).
Tout vient de l'évaluation réalisé par le <'> (le quote) qui
effectivement semble ne pas réagir de la façon attendue (ou du moins,
pas la façon dont on aurait espéré ou imaginé).
Tout vient de l'évaluation réalisé par le <'> (le quote) qui effectivement semble ne pas réagir de la façon attendue (ou du moins, pas la façon dont on aurait espéré ou imaginé).
truc=$(echo $host | sed 's/./\./g'|sed 's///\//g')
echo $truc
resultat 1 ========= > http://www.tr.com/
Script 2 (lancé dans le term) ======= > echo "http://www.tr.com/" | sed 's/./\./g'|sed 's///\//g'
resultat 2 ========= > http://www.tr.com/
Dans le script 1, si tu remplaces les backquotes par $( et ), les 2 résultats sont identiques.
</début extrait man bash> La substitution de commandes permet de remplacer le nom d'une commande par son resultat. Il en existe deux formes :
$(commande) ou `commande`
[...]
Quand l'ancienne forme de substitution avec les backquotes ` est utilisee, le caractere antislash garde sa signification litterale, sauf s'il est suivi de $, `, ou . La premiere backquote non protegee par un antislash termine la substitution de commande. Quand on utilise la forme $(commande), tous les caracteres entre parentheses gardent leurs valeurs litterales. Aucun n'est traite specialement. </fin extrait man bash>
Ce comportement est donc apparemment normal et est reproduit à l'identique avec ksh et zsh.
PS fais-moi passer de l'aspirine, les bardées de «» ne sont pas très aisées à lire ;-)
Amicalement.
-- Il est très curieux de constater que dans l'armée, les statistiques le prouvent, la mortalité augmente bizarrement en temps de guerre. Alphonse Allais
Bonjour,
Bonsoir,
Quelqu'un pet il m'expliquer pourquoi le résultat de ces 2 petit scripts
sont différents ?
truc=$(echo $host | sed 's/\./\\./g'|sed 's///\\//g')
echo $truc
resultat 1
========= > http://www.tr.com/
Script 2 (lancé dans le term)
======= > echo "http://www.tr.com/" | sed 's/\./\\./g'|sed 's///\\//g'
resultat 2
========= > http:\/\/www.tr.com\/
Dans le script 1, si tu remplaces les backquotes par $( et ), les 2
résultats sont identiques.
</début extrait man bash>
La substitution de commandes permet de remplacer le nom d'une commande
par son resultat. Il en existe deux formes :
$(commande)
ou
`commande`
[...]
Quand l'ancienne forme de substitution avec les backquotes ` est
utilisee, le caractere antislash garde sa signification litterale, sauf
s'il est suivi de $, `, ou . La premiere backquote non protegee par
un antislash termine la substitution de commande. Quand on utilise la
forme $(commande), tous les caracteres entre parentheses gardent leurs
valeurs litterales. Aucun n'est traite specialement.
</fin extrait man bash>
Ce comportement est donc apparemment normal et est reproduit à
l'identique avec ksh et zsh.
PS fais-moi passer de l'aspirine, les bardées de «» ne sont pas très
aisées à lire ;-)
Amicalement.
--
Il est très curieux de constater que dans l'armée, les statistiques
le prouvent, la mortalité augmente bizarrement en temps de guerre.
Alphonse Allais
truc=$(echo $host | sed 's/./\./g'|sed 's///\//g')
echo $truc
resultat 1 ========= > http://www.tr.com/
Script 2 (lancé dans le term) ======= > echo "http://www.tr.com/" | sed 's/./\./g'|sed 's///\//g'
resultat 2 ========= > http://www.tr.com/
Dans le script 1, si tu remplaces les backquotes par $( et ), les 2 résultats sont identiques.
</début extrait man bash> La substitution de commandes permet de remplacer le nom d'une commande par son resultat. Il en existe deux formes :
$(commande) ou `commande`
[...]
Quand l'ancienne forme de substitution avec les backquotes ` est utilisee, le caractere antislash garde sa signification litterale, sauf s'il est suivi de $, `, ou . La premiere backquote non protegee par un antislash termine la substitution de commande. Quand on utilise la forme $(commande), tous les caracteres entre parentheses gardent leurs valeurs litterales. Aucun n'est traite specialement. </fin extrait man bash>
Ce comportement est donc apparemment normal et est reproduit à l'identique avec ksh et zsh.
PS fais-moi passer de l'aspirine, les bardées de «» ne sont pas très aisées à lire ;-)
Amicalement.
-- Il est très curieux de constater que dans l'armée, les statistiques le prouvent, la mortalité augmente bizarrement en temps de guerre. Alphonse Allais
TiChou
Dans le message <news:, *Bernard Déléchamp* tapota sur f.c.o.l.configuration :
Je me permets d'apporter ma contribution,
Quelqu'un pet il m'expliquer pourquoi le résultat de ces 2 petit scripts sont différents ?
[...]
truc=`echo $host | sed 's/./\./g'|sed 's///\//g' `
truc=$(echo $host | sed 's/./\./g'|sed 's///\//g')
echo $truc http://www.tr.com/
echo "http://www.tr.com/" | sed 's/./\./g'|sed 's///\//g' http://www.tr.com/
Dans le script 1, si tu remplaces les backquotes par $( et ), les 2 résultats sont identiques.
[snip l'explication très claire :)]
PS fais-moi passer de l'aspirine, les bardées de «» ne sont pas très aisées à lire ;-)
On est bien d'accord. :)
Je voulais apporter l'astuce suivante. Si la finalité du script est de précéder d'un antislash tous les « métacaractères », cela peut être fait plus simplement en utilisant la fonction quotemeta de Perl :
Dans le message <news:40B24DD0.6070801@laposte.net>,
*Bernard Déléchamp* tapota sur f.c.o.l.configuration :
Je me permets d'apporter ma contribution,
Quelqu'un pet il m'expliquer pourquoi le résultat de ces 2 petit scripts
sont différents ?
[...]
truc=`echo $host | sed 's/\./\\./g'|sed 's///\\//g' `
truc=$(echo $host | sed 's/\./\\./g'|sed 's///\\//g')
echo $truc
http://www.tr.com/
echo "http://www.tr.com/" | sed 's/\./\\./g'|sed 's///\\//g'
http:\/\/www.tr.com\/
Dans le script 1, si tu remplaces les backquotes par $( et ), les 2
résultats sont identiques.
[snip l'explication très claire :)]
PS fais-moi passer de l'aspirine, les bardées de «» ne sont pas très
aisées à lire ;-)
On est bien d'accord. :)
Je voulais apporter l'astuce suivante. Si la finalité du script est de
précéder d'un antislash tous les « métacaractères », cela peut être fait
plus simplement en utilisant la fonction quotemeta de Perl :
Dans le message <news:, *Bernard Déléchamp* tapota sur f.c.o.l.configuration :
Je me permets d'apporter ma contribution,
Quelqu'un pet il m'expliquer pourquoi le résultat de ces 2 petit scripts sont différents ?
[...]
truc=`echo $host | sed 's/./\./g'|sed 's///\//g' `
truc=$(echo $host | sed 's/./\./g'|sed 's///\//g')
echo $truc http://www.tr.com/
echo "http://www.tr.com/" | sed 's/./\./g'|sed 's///\//g' http://www.tr.com/
Dans le script 1, si tu remplaces les backquotes par $( et ), les 2 résultats sont identiques.
[snip l'explication très claire :)]
PS fais-moi passer de l'aspirine, les bardées de «» ne sont pas très aisées à lire ;-)
On est bien d'accord. :)
Je voulais apporter l'astuce suivante. Si la finalité du script est de précéder d'un antislash tous les « métacaractères », cela peut être fait plus simplement en utilisant la fonction quotemeta de Perl :