我正在尝试在macos上调试bash脚本。脚本的业务端只是:
$JAVA_COMMAND $CLASS $*
命令行包括/ a / b / d / *,其中/ a / b / d中的文件名称为阿拉伯语。
当我使用sh -x运行时,每个文件都回显为$'/ a / b / c / thearabic '
$'约定来自哪里,它意味着什么?
答案 0 :(得分:2)
来自Bash手册页:
$'string'形式的单词是 特别待遇。这个词扩展到了 字符串,反斜杠转义 字符替换为 ANSI C标准。反斜杠逃脱 序列(如果存在)被解码为 如下:
...
展开的结果是单引号, 好像美元符号没有 当下。双引号字符串 之前是美元符号($)将 导致字符串被翻译 根据当前的区域设置。如果 当前的语言环境是C或POSIX ,. 美元符号被忽略。如果是字符串 被翻译和替换, 替换是双引号。