Опции к команде указаны в файле

Вы используете $'...' , когда хотите, чтобы оболочка интерпретировала экранирующие последовательности.

$ echo 'a\nb'
a\nb

$ echo $'a\nb'
a
b

В perl, опция -e получает строку. Если вы используете $'...', то экранирующие последовательности в строке интерпретируются перед переходом к perl. В вашем случае \r прошла и никогда не проходила до perl.

With $'...':

$ perl -MO=Deparse -we $'binmode STDIN;undef $/;$_ = <>;if(/ab\r\ncd/){print "test"}'
BEGIN { $^W = 1; }
binmode STDIN;
undef $/;
$_ = <ARGV>;
if (/ab\ncd/) {
    print 'test';
}
-e syntax OK

Without it:

$ perl -MO=Deparse -we 'binmode STDIN;undef $/;$_ = <>;if(/ab\r\ncd/){print "test"}'
BEGIN { $^W = 1; }
binmode STDIN;
undef $/;
$_ = <ARGV>;
if (/ab\r\ncd/) {
    print 'test';
}
-e syntax OK
0
07.10.2014, 07:23
1 ответ

для тривиального примера, перечисленного выше,

ls -a $(cat lsoptions.txt)
8
28.01.2020, 02:13

Теги

Похожие вопросы