Якщо я запустив такий простий скрипт 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
у зворотній стороні.