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