Просто чтобы дать конструкции официальное имя : строки вида $'...'
называются ANSI C-цитируемые строки .
То есть, как и в [ANSI] C-строках, escape-последовательности обратной реакции распознаются и расширяются до их буквального эквивалента (полный список поддерживаемых escape-последовательностей см. Ниже).
После этого расширения строки $'...'
ведут себя так же, как '...'
строки - то есть они обрабатываются как литералы НЕ подлежит [дальнейшему] расширению оболочки .
Например, $'\n'
расширяется до буквального символа новой строки - что-то, что является обычным литералом строки bash (будь то '...'
или "..."
) не может сделать. [1]
Еще одна интересная особенность заключается в том, что строки в кавычках ANSI C могут экранировать '
(одинарные кавычки) как \'
, что, '...'
(обычные строки в одинарных кавычках) не могут:
echo $'Honey, I\'m home' # OK; this cannot be done with '...'
Список поддерживаемых escape-последовательностей :
Экранирующие последовательности обратной косой черты, если они есть, декодируются следующим образом:
\ a alert (bell)
\ b backspace
\ e \ E escape-символ (не ANSI C)
\ f подача формы
\ n новая строка
\ r возврат каретки
\ tгоризонтальная табуляция
\ v вертикальная табуляция
\ обратная косая черта
\ 'одинарная кавычка
\ "двойная кавычка
\ nnn восьмая-битный символ, значение которого является восьмеричным значением nnn (от одной до трех цифр)
\ xHH восьмибитный символ, значением которого является шестнадцатеричное значение HH (одна или две шестнадцатеричные цифры)
\uHHHH символ Unicode (ISO / IEC 10646), значением которого является шестнадцатеричное значение HHHH (от одной до четырех шестнадцатеричных цифр)
\ UHHHHHHHH символ Unicode (ISO / IEC 10646), значением которого является шестнадцатеричное значение HHHHHHHH (одиндо восьми шестнадцатеричных цифр)
\ cx контрольного символа x
Расширенный результат заключен в одинарные кавычки, как если бы знак доллара отсутствовал.
[1] Однако вы можете вставлять фактические новые строки в строки "..." и "...";т.е. вы можете определить строки, которые занимают несколько строк.