Как знак доллара в начале влияет на одинарные кавычки в Bash?

Мне нужно передать строку программе в качестве аргумента из CLI Bash, например

program "don't do this"

Строка может содержать любой символ, например '$', '\'и т. д., и я не хочу, чтобы Bash делал какие-либо изменения. Поэтому я думаю об использовании одинарных кавычек.

Однако следующее не работает:

 program 'don\'t do this'            //escape doesn't work in single quote

В то время как следующие две работы:

 program $'dont\'t do this'          //seems fine, but any other side effects?
 program 'dont'\''do this'           //breaking into 3 parts

Первый подход кажется лучше, поскольку он требует меньше предварительной модификации (ставит символ доллара впереди и заменяет каждый \на\\), но я не знаю, что еще может сделать ЗНАК ДОЛЛАРА.

Я действительно гуглил это, но я не могу найти то, что мне нужно...

53
задан Mateusz Piotrowski 7 September 2017 в 02:35
поделиться