/ / Pourquoi 't', renvoyé d'un appel «backtick», est-il étendu à la tabulatrice? Qu'est-ce que tous les personnages sont développés? - perl, bash

Pourquoi le "t", renvoyé de l'appel "backtick", est-il étendu à la tabulatrice? Qu'est-ce que tous les personnages sont développés? - perl, bash

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 № 1

Les 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.