Я не уверен, что для Bash существуют достаточно хорошие формальные грамматики.
Через несколько дней (18 сентября го 2017 )пройдет два семинара Gallium по этому вопросу (в INRIA в Париже ), И. Режи -Джанас(о Разбор оболочки POSIX)и Н. Яннерод(о Формализация промежуточного языка для оболочки POSIX).
(Людям из Gallium нравятся горячие темы исследований, поэтому я считаю, что это сложные темы; Я думаю, они бы опубликовали что-нибудь об этом)
Да, две одинарные кавычки ('' )указывают на конец строк с отступом, поэтому, чтобы использовать их внутри строки с отступом, вам нужно экранировать их:
Since ${ and '' have special meaning in indented strings, you need a way to quote them. $ can be escaped by prefixing it with '' (that is, two single quotes), i.e., ''$. '' can be escaped by prefixing it with ', i.e., '''. - source: https://nixos.org/nix/manual/