/ / Чому "t", повернутий із дзвінка "backtick", розширено до таблиці? Які всі символи розгорнуті? - perl, bash

Чому "t", повертається з дзвінка "backtick", розгорнуто до табулятора? Що розкриваються всі персонажі? - Перл, Баш

Якщо я запустив такий простий скрипт perl (на Linux, з bash),

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

Я чекаю цього t буде надруковано - тобто символ зворотної косої риски та символ "t". Дійсно, якщо я бігаю просто в bash

echo "t"

я бачу t. Однак скрипт perl друкує табулятор.

Чому табулятор розширено в $res? Які всі персонажі так розширені? І, головне, як зупинити його розширення?

Відповіді:

5 за відповідь № 1

Зворотні позначки оцінюються за допомогою /bin/sh, незалежно від оболонки, яку ви хочете використовувати, і це " POSIX XSI-відповідна версія echo реалізовано sh це перетворює t на вкладку. Спробуйте самі, запустивши echo "t" всередині sh.

Щоб уникнути такої поведінки, спробуйте використовувати printf "%sn" замість echo у зворотній стороні.