Bash 手册提到
3.1.2.5 特定于语言环境的翻译
前面带有美元符号 ('$') 的双引号字符串将导致根据当前区域设置翻译该字符串。如果当前语言环境是 C 或 POSIX,则忽略美元符号。如果字符串被翻译并替换,则替换内容将被双引号括起来。
C 语言或某些 C 库中是否存在这种指定字符串文字的方式?
bash 是否模仿了 C 的这种方式?
答案1
$"..."
是 Bash 的访问方式GNU 获取文本翻译。在 C 代码中,它通常是gettext("...")
or _("...")
。 Bash 使用系统默认的消息目录; C 应用程序还可以加载它想要使用的任何目录。
该$"
语法是 Bash 扩展,类似于现有的参数扩展语法,我认为特别是$'
ANSI-C 引用它取自 ksh ,其中可能将来将其纳入 POSIX。 C 语言不支持该语法本身,也没有与之类似的语法。