На $
початку рядка в:
echo $'Hello World\nThis is a new line'
викликає інтерпретацію послідовностей втечі.
Довідковий посібник Баша [каже]
Слова форми $ 'string "обробляються спеціально. Слово розширюється до рядка, а символи, що ухиляються від косої риски, замінюються відповідно до стандарту ANSI C. ..
..
Розширений результат одноцитований, як ніби знак долара не був.
Але
echo $"Hello World\nThis is a new line"
зовсім інше. Ця [стаття] про конкретний переклад мови говорить:
Рядок з подвійним котируванням, який передує знаку долара ('$'), призведе до перекладу рядка відповідно до поточного локалу. Якщо поточний локал - C або POSIX, знак долара ігнорується. Якщо рядок переведено та замінено, заміна подвійно цитується.
Примітка: IIRC обидва $'string'
і $"string"
може не знайти підтримки серед різних оболонок. Не тільки люди з інших оболонок дивляться на них з цікавістю, але й вони дискутують про те, чи можна цього уникнути для перенесення скриптів.