Si je lance un script perl simple comme celui-ci (sous linux, avec bash),
$to_run = q(echo "t");
$res = `$to_run`;
print $res
Je m'attendrais à ça t
sera imprimé - c’est-à-dire le caractère barre oblique inversée et le caractère "t". En effet, si je cours juste en Bash
echo "t"
je vois t
. Cependant, le script perl imprime la tabulatrice.
Pourquoi la tabulatrice est-elle développée dans $res
? Qu'est-ce que tous les personnages sont développés comme ça? Et, plus important encore, comment puis-je empêcher son expansion?
Réponses:
5 pour la réponse № 1Les backticks sont évalués en utilisant /bin/sh
, quel que soit le shell que vous souhaitez utiliser, et c’est le Version POSIX conforme à XSI de echo
implementé par sh
c'est la conversion t
à un onglet. Essayez vous-même en courant echo "t"
à l'intérieur sh
.
Pour éviter ce comportement, essayez d’utiliser printf "%sn"
au lieu de echo
dans les backticks.