Если включено «вторичное расширение», требуется $$$$
для генерации одного $
в фактическом выходе. $
обычно используется для расширения переменных, вызова функций make и т. Д. $$
с включенным вторичным расширением делает что-то еще, но в противном случае он генерирует фактический $
в выводе.
Оболочка, которая использует для выполнения командных строк в Unix-подобных системах, обычно интерпретирует $$
как расширение идентификатора процесса оболочки. Таким образом, без включенного вторичного расширения $$$$
превратится в $$
в выводе, который оболочка расширит до идентификатора процесса.
(Использование идентификатора процесса оболочки в качестве суффикса - это простой способ гарантировать уникальность имени файла для временного файла.)