Я пытался выполнить новую строку, используя echo
и попытался следующие две команды:
Первая команда:
echo $'Hello World\nThis is a new line'
Отклик:
Hello World This is a new line
Вторая команда:
echo $"Hello World\nThis is a new line"
Отклик:
Hello World\nThis is a new line
Мой вопрос: в чем разница между строкой, обернутой $' '
строкой, и строкой, обернутой $" "
в bash
's echo
?
"weak quote"
и'strong quote'
отличаются от$'C String'
и$"I18N String"
.Ответы:
Как объяснено здесь , синтаксис
$'string'
определяет строку в стиле C, которая включает магические экранированные символы, например,\n
для новой строки.$"string"
предназначен для расширения I18N, у которого нет таких волшебных побегов.Обратите внимание, что они отличаются от более распространенных
"string"
(слабое цитирование) и'string'
(сильное цитирование).источник
В
$
начале строки в:заставляет escape-последовательности интерпретироваться.
Справочник Bash [говорит]
Но
совершенно другой. Эта [статья] о переводе на конкретный язык говорит:
Примечание: IIRC оба
$'string'
и$"string"
могут не найти поддержки среди разных оболочек. Не только люди из других оболочек с любопытством смотрят на них, но и спорят о том, можно ли этого избежать из-за переносимости сценариев.источник
ksh93
тоже понимает$'...'
.$'xxx'
это не башизм, но впервые был введенksh
несколькими годами ранееbash
. В настоящее время она также поддерживаетсяzsh
иbusybox sh
и находится на рассмотрении в стандарте POSIX.