/ / Dlaczego „t”, zwrócone z połączenia „backtick”, rozwinięte do tabulatora? Jakie są wszystkie postacie? - perl, bash

Dlaczego "t", powrócił z wywołania "wstecznego", rozwinął się do tabulatora? Jakie są wszystkie postacie? - perl, bash

Jeśli uruchomię prosty skrypt perla, taki jak ten (w linuxie, z bash)

$to_run = q(echo "t");
$res = `$to_run`;
print $res

Spodziewałbym się tego t zostanie wydrukowany - czyli znak ukośnika odwrotnego i znak „t”. Rzeczywiście, jeśli biegnę w bashu

echo "t"

Widzę t. Jednak skrypt perla wypisuje tabulator.

Dlaczego tabulator jest rozwinięty $res? Jakie wszystkie postacie są tak rozbudowane? A co najważniejsze, w jaki sposób mogę go powstrzymać przed rozszerzaniem?

Odpowiedzi:

5 dla odpowiedzi № 1

Backticks są oceniane za pomocą /bin/sh, niezależnie od powłoki, której możesz użyć, i to jest Wersja zgodna z POSIX XSI echo wprowadzony przez sh to się konwertuje t do karty. Wypróbuj sam, biegając echo "t" wewnątrz sh.

Aby uniknąć tego zachowania, spróbuj użyć printf "%sn" zamiast echo w backticks.