ANSI-C 引用和特定于语言环境的翻译中的扩展何时发生?

ANSI-C 引用和特定于语言环境的翻译中的扩展何时发生?

来自 bash 手册

该形式的单词$'string'经过特殊处理。该单词扩展为字符串,并按照 ANSI C 标准指定的方式替换反斜杠转义字符

前面带有美元符号 ('$') 的双引号字符串将导致根据当前区域设置翻译该字符串。如果当前语言环境是 C 或 POSIX,则忽略美元符号。如果字符串被翻译并替换,则替换内容将被双引号括起来。

我想知道什么时候会发生这种扩展?

我想它们一定是在解析之后发生的。如果这是正确的,那么它们何时发生在 shell 扩展(例如大括号扩展、参数扩展和文件名扩展)方面?

谢谢。

答案1

$'...'与任何其他引用一样工作,只是它只是提供了呈现某些字符的替代方式。

这些都打印{foo,bar}

echo $'\x7b'foo,bar}
echo "{"foo,bar}

...这会触发大括号扩展并打印foo bar

echo {foo,bar}

鉴于foo=abc,这些打印$foo

echo $'\x24'foo
echo "$"foo

...这会扩展变量并打印abc

echo $foo

如果有一个名为 的文件abc.txt,则会打印abc.txt

echo "a"*.txt
echo $'\x61'*.txt

我只能假设 也是如此$".."

相关内容