Вопрос, который вы задали, касается только того, как оболочка интерпретирует свой ввод и передает его другим программам. По сути, это не имеет ничего общего с Perl.
Вы должны просто иметь возможность поместить это в скрипт:
foo '$x; $y;'
Аргумент, переданный команде, будет иметь новую строку в том же месте, что и в самом скрипте. Возможно, вам придется позаботиться о сохранении такого скрипта таким образом, чтобы он заканчивался переносами строк в стиле Unix (только для LF), в противном случае вы можете получить CR + LF (разрывы строк в DOS / Windows) или просто CR (старый Линейка в стиле Mac достигает максимума). Вы также можете сделать это в интерактивной подсказке, но перед второй и всеми последующими строками вы увидите подсказку продолжения:
$ foo '$x; > $y;'
В bash вы также можете использовать синтаксис $''
цитирования для кодирования символа новой строки, например:
foo $'$x;\n$y;'
Аргумент, передаваемый программе, будет обрабатываться аналогично строке C ANSI. Если вы хотите, чтобы в строке был фактический обратный слеш \\
, вместо этого вы должны будете экранировать его как .
Так что, если вы действительно хотите использовать кавычки из буквенных строк, которые вам дают одинарные кавычки, вам, вероятно, следует придерживаться встроенной новой строки, чтобы вам не пришлось беспокоиться о дополнительном экранировании.